hey
ich nutze gern diese funktion sie ist sehr einfach zu handhaben ^^
r ist der radius, a der winkel, x und y ist der abstand von dem du ausgehst
px,py sind die koordinaten des punktes den du drehen willst
mx,my sind die mittelpunktkoordinaten
rotpoint is der gedrehte punkt
Delphi-Quellcode:
r:=sqrt((px-mx)*(px-mx)+(py-my)*(py-my));
pii:=PI/180;
rotpoint:=get_rot_point(r,a,mx,my);
function get_rot_point(r,a,x,y:double):TPoint;
begin
Result.X:=round(r*cos(a*pii)+x);
Result.Y:=round(r*sin(a*pii)+y);
end;
benutze so egnaue werte wie möglich und runde so spät wie möglich
kleiner tipp: wenn du ein bild drehen möchstest, denn geh vom gedrehten bild aus und
hol dir über die rot funktion die farben der original pixel, wenn du das bild von original einfach drehst, entstehen löcher.
andersrum kriegst du vielleicht ein paar falsche farbwerte für ein paar pixel die sieht man aber schlechter als löcher
beim rotieren gibt es immer daten verlust