![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите кто может [D6]
котел © (2002-12-10 00:52:00)Имеется окружность. Нужно постепенно залить круг(типа горизонтальный уровень в стакане),вариант с Pie не предлогагь
MBo (2002-12-10 14:21:00) [1]timer1.enabled:=True;
h:=0;
x0:=200;
y0:=200;
r:=100;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
h:=h+0.01;
if h>pi then
Timer1.Enabled:=False;
Canvas.Chord(x0-r,y0-r,x0+r,y0+r,x0-round(r*sin(h)),
y0+round(r*cos(h)),x0+round(r*sin(h)),y0+round(r*cos(h)));
end;
zavdim (2002-12-10 10:29:00) [2]не заметил слова "постепенно".
но мой вариант(без подробностей) - катит, у меня там постепнно и закрашивается.
han_malign (2002-12-10 10:25:00) [3]Докатились - уже не можем сами нарисовать фигурную гистограмму, с заданной формой границы, дети этим еще в 5-8 классе балуются.
Как вариант - рисуешь в Paint-е маску(хоть в виде члена с яйцами...)(маска - битовая матрица задающая поле отрисовки(монохромная картинка)), а дальше по маске рисуешь прямоугольник нужной высоты - можно руками проверять, можно воспользоваться API функциями(MaskBlt - скажем).
Наталия (2002-12-10 09:45:00) [4]А можно и через регионы попробовать решать...
zavdim (2002-12-10 08:33:00) [5]1. А можно узнать чем Pie не нравится?
2. Если фигура выпуклая, есть начальная точка в фигуре и есть функция, которая возвращает истину если переданная ей точка лежит в фигуре и наоборот, то я писал функцию заливки, по пути считал площадь фигуры.
PVOzerski (2002-12-10 02:48:00) [6]IMHO, надо исходить из уравнения окружности x^2+y^2=R^2: находим возможные значения абсциссы для одной и той же ординаты и, если их 2, рисуем линию (с учетом поправок для X и Y, исходящих из координат центра окружности, а также того, что точка, куда непостредственно указывает LineTo, не прокрашивается, т.е надо прибавлять ко 2-й абсциссе еще единичку).