в общем написал я код, который поворачивает картинку, ускорял как мог, что получилось:
Код:
const da = 1;
var x_,y_,a: Real;
x,y: Integer;
cl,trcl: TColor;
sina,cosa: Real;
begin
trcl:=Image1.Canvas.Pixels[0,0];
a:=pi/180*da;
while true do begin
sina:=sin(a);
cosa:=cos(a);
for x:=0 to Image1.Width-1 do
for y:=0 to Image1.Height-1 do begin
cl:=Image1.Canvas.Pixels[x,y];
If cl<>trcl then begin
x_:=(x-Image1.Width/2)*cosa-(y-Image1.Height/2)*sina+Image1.Width/2;
y_:=(x-Image1.Width/2)*sina+(y-Image1.Height/2)*cosa+Image1.Height/2;
Image2.Canvas.Pixels[Round(x_),Round(y_)]:=cl;
end;
end;
a:=a+pi/180*da;
Application.ProcessMessages;
end;
end.
ускорял как мог (синус и косинус только 1 раз считаю, не беру прозрачные пикселы) но все равно он вращает медленно, может у кого есть идеи как это ускорить?