![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как нарисовать эллипс под произвольным углом [D7, WinXP]
wardoc © (2005-06-04 12:46:00)Доброго времени суток.
Уважаемые, подскажите плиз как нарисовать эллипс под произвольным углом.
programania (2005-06-04 23:45:00) [1]
procedure TForm1.Button1Click(Sender: TObject);
const ugol=30; //угол поворота элипса в градусах
var
i,xx,yy,h,w,xc,yc:integer;
u,f,x,y:extended;
begin
w:=200; h:=100; //размеры элипса
xc:=clientWidth div 2; //центр
yc:=clientHeight div 2;
canvas.brush.color:=255;
f:=2*pi * ugol /360;
for i:=1 to 3600 do begin
u:=2*pi * i / 3600;
x:=w*sin(u{*3}); //убрать коментарии
y:=h*cos(u{*5}); //чтоб было покрасивее элипса
//поворот точки x,y вокруг xc,yc на угол f
xx:=trunc(x*cos(f) - y*sin(f))+xc;
yy:=trunc(x*sin(f) + y*cos(f))+yc;
canvas.fillRect(rect(xx,yy,xx+2,yy+2));
end;
end;
MBo (2005-06-04 18:11:00) [2]В NT-системах (указана XP, так что, видимо, подойдет) - SetWorldTransform c матрицей поворота относительно центра эллипса
В Вин9X - аппроксимировать эллипс 4-мя кривыми Безье, провести аффинное преобразование поворота над их контрольными токами, отрисовать.