![]() |
Kreis im transparenten TImage zeichnen
Hallo zusammen,
ich habe gerade einen Deckfehler oder ein Brett vorm Kopf: In meinem Tool verwende ich 2x TImage 1x TImage, in dem ein Bild vorhanden ist 1x TImage, in dem ich 2 Kreise zeichnen möchte Die beiden TImage liegen übereinander, dabei soll der gezeichnete Kreis über dem Bild (TImage1) erscheinen. Das Zeichnen des Kreises ist auch kein Problem, jedoch soll der Rest transparent sein, sodass das Bild im Hintergrund zu erkennen ist. Irgendwo habe ich einen Denkfehler drin und sollte ich ein Thema im Forum übersehen haben, das mein Problem lösen könnte, bitte ich um Entschuldigung. Über etwas Hilfe wäre ich dankbar. LG DieFliege
Delphi-Quellcode:
image2.Canvas.Pen.Color := clRed;
image2.Canvas.Pen.Width := 3; image2.Canvas.Brush.Style := bsClear; image2.Canvas.Ellipse(100, 100, 300, 300); |
AW: Kreis im transparenten TImage zeichnen
Und was ist nun das Problem?
|
AW: Kreis im transparenten TImage zeichnen
Hallo Himitsu,
Zitat:
LG DieFliege |
AW: Kreis im transparenten TImage zeichnen
Na dann. :angle:
Nunja, original ist das "Bild" garnicht transparent. Das sieht nur so aus, weil garkein Bild geladen und somit nichts gemalt wird. Du hast nicht zufällig vergessen die Transparenz im TImage zu aktivieren? Und was für eine Graphic-Instanz/Typ ist geladen? Wenn Bitmap ... Du weißt auch wie beim Bitmap das mit der Transparenz funktioniert? Ich meine nicht die TransparentColor, sondern tmAuto. |
AW: Kreis im transparenten TImage zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo himitsu,
Die Eigenschaft "Transparent" für das TImage habe ich gesetzt, jedoch habe ich immer noch den weißen Rahmen - Siehe Screenshot. Zitat:
LG DieFliege |
AW: Kreis im transparenten TImage zeichnen
Hey,
ich habe es nun so gelöst:
Delphi-Quellcode:
Danke an himitsu für den Denkanstoß zu Bitmap :-)
procedure TForm1.btn_BildClick(Sender: TObject);
var MeinBild : TBitmap; begin //-- MeinBild := TBitmap.Create; MeinBild.LoadFromFile('meinbild.bmp'); MeinBild.Canvas.Pen.Color := clRed; MeinBild.Canvas.Pen.Width := 3; MeinBild.Canvas.Brush.Style := bsClear; MeinBild.Canvas.Ellipse(100, 100, 300, 300); Image2.Picture.Bitmap.Assign(MeinBild); end; LG DieFliege |
AW: Kreis im transparenten TImage zeichnen
Zitat:
Zitat:
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
Delphi-Quellcode:
Image2.Picture.Graphic.Canvas
bzw.
Delphi-Quellcode:
Image2.Picture.Bitmap.Canvas
(nicht
Delphi-Quellcode:
)
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
Delphi-Quellcode:
Image2.Picture.Bitmap.Canvas.Ellipse(100, 100, 300, 300);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 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