FireMonkey Canvas.DrawLine auf Windows XP
Wie kann ich eine Linie ziehen ? Dieser code zeigt nichts an :
var my_point_1, my_point_2: tPointF;
Canvas.Stroke.Color := claBlue;
Canvas.Stroke.Kind:= tBrushKind.bkSolid;
my_point_1.X:= 100;
my_point_1.Y:= 100;
my_point_2.X:= 120;
my_point_2.Y:= 150;
Canvas.BeginScene;
Canvas.DrawLine(my_point_1, my_point_2, 1.0);
Canvas.EndScene;
Windows XP Service Pack 3 (tOsVersion.ToString ", Version 5.1, Build 2600, 32-bit Edition", Delphi XE2 update 1 installiert)
- Ich Teste den code auf Win 7 x64 und funktioniert ok, aber in einer VM mit Win XP schlägt fehl. sind Sie über eine Virtuelle Maschine um den code zu testen?
- Btw willkommen auf StackOverflow, ich hoffe, Sie bleiben hier eine Weile, um zu teilen Ihr wissen. 🙂
- zu RRUZ : Dank der über das willkommen. Über XP, nope, es ist ein einfacher PC mit XP Quadrat auf es
- Ich füge die
[delphi]
tag wieder um die Frage, mehr Sichtbarkeit, ich weiß, dass FireMonkey bezieht sich nur auf Delphi-xe2, sondern gehört auch zu den[delphi]
🙂 - Fair genug. 🙂 Habe ich es entfernt, weil es nicht von nutzen für jedermann mit Delphi 1 - Delphi XE, das ist die überwiegende Mehrheit der Delphi-Benutzer.
- Können wir etwas mehr Kontext? Es funktioniert gut in der FormPaint-event in 2D-form läuft auf einem Vista-VM bei mir. (Nie lernen können, die <EINGABETASTE> schickt die post damit die änderungen angezeigt werden.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie erwarten, dass dies einfach, wie ich es Tat. Allerdings ist es auch nicht. Dies sind frühe Tage für FireMonkey und Embarcadero scheinen überwältigt von dem feedback.
Bei der Verwendung der Leinwand-direkt auf die TForm, müssen Sie akzeptieren, dass das Ergebnis ist flüchtig, d.h. Sie verschwindet auf der ersten repaint (Größenänderung, andere Fenster überlappen etc.).
Dieser funktioniert bei mir auf mehreren Rechnern:
Erstellen Sie eine neue FM-HD-Projekt, fügen Sie eine Schaltfläche und ein handler:
Ausführen, klicken Sie auf die Schaltfläche, und es wird (hoffentlich): voila!
Auf ein TImage Leinwand, allerdings ist es etwas komplizierter (sprich:buggy???)
Erstellen Sie ein neues Projekt, diesmal mit zwei TButtons und eine TImage - set (Links,oben), um so etwas wie (150,150) zu unterscheiden, seine Leinwand, die es von der Leinwand auf die TForm.
Fügen Sie diesen code zuweisen-Handler (doppelklicken Sie auf die form und die Tasten):
Eine abschließende Bemerkung: sobald Sie anfangen zu spielen mit dem ScanLine-Eigenschaft der Bitmap, stellen Sie sicher, dass Sie es tun, die AUßERHALB eines BeginScend/EndScene Abschnitt - und nachdem Sie fertig sind, stellen Sie eine "dummy" - BeginScend/EndScene Abschnitt, um sicherzustellen, dass Ihre änderungen nicht verloren gehen 🙁
Ich könnte Sie zurück zu dieser manchmal, wenn nötig ;o)
Glück !
Carsten