Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TBitmap mit Alpha-Channel (https://www.delphipraxis.net/204928-tbitmap-mit-alpha-channel.html)

renew 15. Jul 2020 08:53

TBitmap mit Alpha-Channel
 
Hallo,

ich bekomme es nicht hin ein TImage (bzw.TBitmap) mit Alphakanal aus einer TImageList zu benutzen. Vorher habe ich das Bild (png mit Alphakanal) mittels TPicture.LoadFromFile geladen und in mein TBitmap kopiert:
bmp.Canvas.Draw(0, 0, pngPicture.Graphic); Funktionierte gut, nur soll ich nun die Bilder aus eine TImageList nutzen statt aus einer Datei.

Die Png-Bilder werden in der ImageList mit Alphakanal angezeigt. ColoDepth=cd32Bit und DrawingStyle=dsTransparent
Aber wenn ich diese wie zuvor zeiche, wird der Alphakanal nicht benutzt. Habe schon viel ausprobiert; z.b. auf die Scanlines zugreifen, um den Alphakanal zusetzen.
Aber das Bild wird entweder Bund mit Alphakanal angezeigt, oder Schwarz/Weiss mit Alphakanal.
Ich kann mir auch keine Komponenten (wie z.b. Bitmap32) installieren.

Wie schaffe ich es ein PNG-Bild aus einer ImageList mit Alphakanal zu benutzen (am besten als TImage)?

haentschman 15. Jul 2020 09:03

AW: TBitmap mit Alpha-Channel
 
Moin...8-)

Welche Image List? TImageList oder TPngImageList?

renew 15. Jul 2020 09:09

AW: TBitmap mit Alpha-Channel
 
Moin,
ich benutze TImageList.
TPngImageList habe ich nicht

haentschman 15. Jul 2020 09:25

AW: TBitmap mit Alpha-Channel
 
Zitat:

TPngImageList habe ich nicht
...dann wird es Zeit. :zwinker:

TPngImageList ist vererbt von TImageList. Sieht genauso aus, arbeitet sich gleich. Da wo du die ImageList eingebunden hast...einfach durch TPngImageList ersetzen. (OI) Die Liste ist explizit für PNG gemacht. Ich habe, genau auch wegen der Transparenz, alles auf PNG umgestellt. Der nächste Schritt für die Zukunft ist SVG...:zwinker:
Die TPngImageList findest du im GetIt.
oder:
http://cc.embarcadero.com/Item/26127

PS: Deine aktuelle Delphi Version ist schon interessant. -> Profil

renew 15. Jul 2020 09:41

AW: TBitmap mit Alpha-Channel
 
Ok, installiere PngComponents nun. Da kann man mit TImageListe ja lange probieren :)

Danke für eure Hilfe.

renew 15. Jul 2020 10:14

AW: TBitmap mit Alpha-Channel
 
hm, sehe den Wald vor lauter Bäumen nicht mehr. Wie kann ich nun ein Bild mit Alpha-Kanal aus einer TPngImageList in ein TImage kopieren/Zeichnen/Whatever, sodass die TImage-Komponente das Bild korrekt darstellt.

haentschman 15. Jul 2020 10:48

AW: TBitmap mit Alpha-Channel
 
Hänge doch mal ein PNG an...

Blup 15. Jul 2020 10:49

AW: TBitmap mit Alpha-Channel
 
Vieleicht so?
Delphi-Quellcode:
Image1.Picture.Graphic := PngImageList1.Items[0].PngImage;

renew 15. Jul 2020 11:03

AW: TBitmap mit Alpha-Channel
 
Danke, das funktioniert. Hatte immer so in der Art probiert...

bitmap := TBitmap.Create;
bitmap.PixelFormat := pf32bit;
bitmap.AlphaFormat := afDefined;
ImageList1.GetBitmap(0, bitmap);
Image1.Canvas.Draw(0,0, bitmap);

Finde das irgendwie unnötig kompliziert - wenn man aus der C# Ecke kommt *duck*

Danke und Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf