Показать сообщение отдельно
  #5  
Старый 16.11.2006, 16:47
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

//Должно работать

function TForm1.RotatePixel(x0,y0,x,y,alpha:real):Tpoint; //Поврот точки
var
Pix:TPoint;
R:real;
beta:real;
begin
R:=sqrt(sqr(x0-x)+sqr(y0-y)); //Находим радиус
beta:=ArcTan2((y0-y),(x0-x)); //Компинсирующий угол
alpha:=pi*alpha/180;
Pix.X:=Round(R*-cos(alpha-beta)+x0);
Pix.y:=Round(R*sin(alpha-beta)+y0);
result:=Pix;
end;

procedure TForm1.DrawCircle(x0,y0,R:real);
var
i:real;
pix:Tpoint;
begin
i:=0;
while i<3600 do begin
i:=i+0.1;
Pix:=rotatePixel(x0,y0,x0+R,y0,i);
form1.Canvas.Pixels[Round(Pix.X),Round(Pix.Y)]:=clblack;
end;
end;
Ответить с цитированием