![]() |
Mit DrawIcon transparent zeichnen
Hi,
da ich Probleme habe, über eine DLL eine TIcon-Referenz zu zeichnen, bin ich auf das entsprechende Handle vom Typ HICON umgestiegen. Um ein solches Icon zu zeichnen, gibt es die WinAPI-Funktion DrawIcon. Das Problem ist jedoch, dass das Icon dann zwar gezeichnet, aber der Hintergrund mit weiß aufgefüllt wird.
Delphi-Quellcode:
Ein Setzen von TImage.Transparent hat leider nicht geholfen. Gibt es da einen einfachereren Trick, als den Hintergrund nachträglich nochmal mit clBtnFace zu füllen?
DrawIcon(Image1.Canvas.Handle, 15, 15, MeinIcon);
Chris |
Re: Mit DrawIcon transparent zeichnen
Hallo,
wahrscheinlich geht das mit DrawIconEx besser ;-) Könnte aber auch schon reichen, ein entsprechendes Brush zu setzen. |
Re: Mit DrawIcon transparent zeichnen
Hi,
nö, weder Brush noch DrawIconEx führen mich zum gewünschten Ergebnis. Sonst noch irgendwelche Vorschläge? Chris |
Re: Mit DrawIcon transparent zeichnen
Hi Chris!
Ich glaube dein Icon macht das Problem und weniger der DrawIcon-Aufruf. Das...
Delphi-Quellcode:
... funktioniert wunderbar. :)
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var Ico : HICON; begin Ico:=Application.Icon.Handle; DrawIcon(Canvas.Handle, x, y, Ico); end; |
Re: Mit DrawIcon transparent zeichnen
Hi,
dummerweise hat mein Icon die gleiche Herkunft wie bei dir. *g* Naja, ich lasse es jetzt erstmal so:
Delphi-Quellcode:
Funktionieren tut's ja.
imgAppIcon.Canvas.Brush.Color := clBtnFace;
DrawIconEx(imgAppIcon.Canvas.Handle, 15, 15, fApplicationInfo.AppIcon, 0, 0, 0, imgAppIcon.Canvas.Brush.Handle, DI_NORMAL); imgAppIcon.Canvas.FloodFill(0, 0, clWhite, fsSurface); Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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