![]() |
Graphic Control um 90 grad drehen
Ich muß ein Graphic Control (Canvas) um 90 Grad drehen und dieses Canvas wird zur Laufzeit ungefähr 25 mal pro Sekunde neu gezeichnet!!!
Gemeint ist nicht eine Bitmap oder JPG die um 90 Grad gedreht werden soll (dazu gibt es ja jede Menge Lösungen hier im Forum) Für Hilfe oder Anregungen wäre ich sehr dankbar |
Re: Graphic Control um 90 grad drehen
Vlt. hilft dir die Win-API Funktion "SetWorldTransform" weiter ...
|
Re: Graphic Control um 90 grad drehen
kannst du das konkretisieren
oder besser noch ein demo source code beifügen vielen dank im voraus |
Re: Graphic Control um 90 grad drehen
In der Hilfe von Delphi solltest du darüber etwas finden. Oder im MSDN ...
Google + SetWorldTransform :wink: ![]() |
Re: Graphic Control um 90 grad drehen
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:
Wie gesagt, nur ein schnell zusammengebasteltes Beispiel. Aber wem's Hilft :P
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; |
Re: Graphic Control um 90 grad drehen
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank Deep-Sea
für den demo source code, aber leider bringt er nicht den gewünschten Effekt. Es dreht sich nur der Inhalt der Komponente aber nicht die gesamte Komponente. Ich habe ein kleines demo progrämchen beigefügt, wo du es sehr schön sehen kannst. und hier der quell code im program: procedure TForm1.MMLevel1Paint(Sender: TObject); var XF: TXForm; x0, y0: Integer; q: Double; begin x0 := MMLevel1.Width div 2; y0 := MMLevel1.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 MMLevel1.Canvas do begin SetGraphicsMode(Handle, GM_ADVANCED); SetWorldTransform(Handle, XF); // Rectangle(x0 - 20, y0 - 10, x0 + 20, y0 + 10); // habe ich nicht aufgerufen (bringt natürlich auch nichts) end; end; procedure TForm1.SpinEdit1Change(Sender: TObject); begin MMLevel1.Repaint; PaintBox1.Repaint; end; |
Re: Graphic Control um 90 grad drehen
Zitat:
(PS: Wenn schon eine Exe, dann bitte ohne RTL :wink:) |
Re: Graphic Control um 90 grad drehen
ich will das sich die ganze komponente dreht, genauso wie die PaintBox1.
was mache ich den falsch |
Re: Graphic Control um 90 grad drehen
Zitat:
Häng das Projekt noch mal ohne RTL an (oder als Source) ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz