Für die Faulen hab ich mal kurz ein Bsp.
Auf der Form befinden sich nur eine PaintBox und ein SpinEdit (was den Winkel angibt).
Delphi-Quellcode:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
XF: TXForm;
x0, y0: Integer;
q: Double;
begin
x0 := PaintBox1.Width
div 2;
y0 := PaintBox1.Height
div 2;
q := SpinEdit1.Value / 180 * 3.1415926;
XF.eM11 := cos(q);
XF.eM12 := sin(q);
XF.eM21 := -sin(q);
XF.eM22 := cos(q);
XF.eDx := x0 - cos(q) * x0 + sin(q) * y0;
XF.eDy := y0 - cos(q) * y0 - sin(q) * x0;
With PaintBox1.Canvas
do
begin
SetGraphicsMode(
Handle, GM_ADVANCED);
SetWorldTransform(
Handle, XF);
Rectangle(x0 - 20, y0 - 10, x0 + 20, y0 + 10);
end;
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
PaintBox1.Repaint;
end;
Wie gesagt, nur ein schnell zusammengebasteltes Beispiel. Aber wem's Hilft