Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.177 Beiträge
 
Delphi 12 Athens
 
#7

AW: Kreis im transparenten TImage zeichnen

  Alt 17. Dez 2022, 14:16
Hier habe ich keine geladen,
Delphi-Quellcode:
image2.Canvas.Pen.Color := clRed;
image2.Canvas.Pen.Width := 3;
image2.Canvas.Brush.Style := bsClear;
image2.Canvas.Ellipse(100, 100, 300, 300);
Ahhhh, jetzt seh ich es.
Du hast auf/über das TImage gemalt, nicht in das Image, also in die "angezeigte" Graphic ... sowas macht man nicht.
Dort gibt es keine Transparenz. (transparent ist das, bzw. den Hintergrund sieht man nur dort, wo du niemals etwas übermalt hattest)


So hättest du auch gleich eine TPaintBox nehmen können
und sobald durch irgendwass das "Image" oder die Hintergrundkomponenten neu gezeichnet werden (z.B. minimiern/maximieren des Fensters oder einfach mal kurz das Fenster aus dem sichtbaren Berech verschieben und früher (vor dem DWM) auch wenn irgendwas, wie ein anderes Fenster, vor/über deinem Fenster lag) muß der Kreis im OnPaint auch immer wieder neu von dir gemalt werden.

Du wolltest eigentlich
Image2.Picture.Graphic.Canvas
bzw.
Image2.Picture.Bitmap.Canvas
(nicht Image2.Canvas )

Beim Zugriff auf Image2.Picture.Bitmap wird in Graphic ein TBitmap erstellt, wenn es noch Keines gibt, so groß wie das TImage aktuell ist.

also Image2.Picture.Bitmap.Canvas.Ellipse(100, 100, 300, 300);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (17. Dez 2022 um 14:21 Uhr)
  Mit Zitat antworten Zitat