![]() |
PNG auf Layered Window zeichnen
Hallo,
ich habe folgendes Problem: Ich habe eine Form erstellt die Ich per UpdateLayeredWindow mit einem PNG ausgestattet hab. Jetzt will ich darauf aber noch ein PNG anzeigen lassen, welches natürlich auch richtig auf die Grundform geblendet wird. Leider weis ich nich wie ich das realisiere und hoffe dass mir dabei jemand helfen kann XD. Ich hab das ganze mit einem TImage32 versucht. Das Bild wird auch angezeigt, allerdings blendet er nich richtig, sprich: Es steht ein hässlicher rosa Rand XD. Ist das mit nem Image32 überhaupt möglich? So sieht der relevante Code aus:
Delphi-Quellcode:
Ich mach daran jetzt schon ewig rum XD ... aber ich kriegs einfach nich hin.
Bit2 := TBitmap32.Create;
LoadPNGintoBitmap32(Bit2, ExtractFilePath(ParamStr(0)) + 'close_blend.png', Alpha); bit2.Width := 86; bit2.Height := 36; img := timage32.Create(form1); with img do begin Left := 112; Top := 6; Width := 86; Height := 36; Parent := form1; onclick := form1.PNGButton1Click; bitmap.Width := 86; bitmap.Height := 36; Bitmap.DrawMode := dmblend; Bitmap.CombineMode := cmblend; end; bitblt(img.Bitmap.Handle,0,0,86,36,bit2.Handle,0,0,SRCCOPY ); Ich hab das ganze auch schon versucht direkt auf die form zu zeichnen. Also so:
Delphi-Quellcode:
Aber auch dann wird das Bild nicht richtig dargestellt, allerdings ist es dann nicht nur ein rosa Rand, sondern die gesamte Grundfläche des PNG´s ist schwarz (also die stellen die eigentlich transparent sein sollten).
bitblt(form1.canvas.Handle,0,0,86,36,bit2.Handle,0,0,SRCCOPY );
Ich weis nich mehr weiter bitte helft mir XD. |
Re: PNG auf Layered Window zeichnen
Hi,
Auf die Schnelle... Nicht bitBlt verwenden dondern die Draw- / DrawTo-Funktion der Unit Gr32 verwenden. Grund bitBlt kann kein Alphablend. |
Re: PNG auf Layered Window zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für den Tipp. Habs jetzt mit Draw direkt auf das Bild gezeichnet bevor es quasi der Form attached wird:
Delphi-Quellcode:
Und danach dann halt
form1.Label7.Caption := 'Close';
Bit2 := TBitmap32.Create; LoadPNGintoBitmap32(Bit2, ExtractFilePath(ParamStr(0)) + 'close_blend.png', Alpha); bit2.Width := 84; bit2.Height := 58; bit2.DrawMode := dmblend; bit2.CombineMode := cmMerge; Bit2.DrawTo(bit,114,-5); bit2.free;
Delphi-Quellcode:
Ich denk so is das jetzt die günstigste Lösung.
UpdateLayeredWindow(Handle, 0, nil, @Size, Bit.Handle, @P, 0, @BlendF, ULW_ALPHA);
Der Code ist jetzt sogar kürzer als vorher ... ich dachte eher der würde noch länger werden. Ich hab das Ergebnis ma angehängt ^^ EDIT: lol ... wenn ich bei google 'delphi png layered' ( ohne Anführungszeichen ) suche, krieg ich den Thread hier an erster Stelle XD ... trifft sich gut ... ich hab mich zu dem Thema dumm und dämlich gesucht ... dabei war die Lösung jetzt so einfach >_<" |
Re: PNG auf Layered Window zeichnen
Boah, das sieht ja echt heiss aus... Wieviel Aufwand ist das?
|
Re: PNG auf Layered Window zeichnen
huhu...
Aus purer Neugier würde mich der Source auch sehr interessieren ^^ :stupid: Sieht jedenfalls sehr schnieke aus... Shalom |
Re: PNG auf Layered Window zeichnen
Zitat:
dem schließ ich mich auch mal an, währe echt top wenn du den source noch hochladen könntest.. |
Re: PNG auf Layered Window zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Die Anleitung für das "Form Picture" hab ich hierher
![]() Ich benutz darin die Komponenten PNGImage, Graphics32 und PNGButton, die solltet ihr also unbedint installiert haben ![]() ![]() ![]() Ich hab das Ganze auch noch mit´n paar Kommentaren versehen ... hoffe ma dass es im Großen und Ganzen verständlich is |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 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 by Thomas Breitkreuz