AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TBitmap mit Alpha-Channel

Ein Thema von renew · begonnen am 15. Jul 2020 · letzter Beitrag vom 15. Jul 2020
Antwort Antwort
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 08:53
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)?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.837 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 09:03
Moin...

Welche Image List? TImageList oder TPngImageList?
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 09:09
Moin,
ich benutze TImageList.
TPngImageList habe ich nicht
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.837 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 09:25
Zitat:
TPngImageList habe ich nicht
...dann wird es Zeit.

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...
Die TPngImageList findest du im GetIt.
oder:
http://cc.embarcadero.com/Item/26127

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

Geändert von haentschman (15. Jul 2020 um 09:31 Uhr)
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 09:41
Ok, installiere PngComponents nun. Da kann man mit TImageListe ja lange probieren

Danke für eure Hilfe.
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 10:14
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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.837 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

AW: TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 10:48
Hänge doch mal ein PNG an...
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.332 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 10:49
Vieleicht so? Image1.Picture.Graphic := PngImageList1.Items[0].PngImage;
  Mit Zitat antworten Zitat
renew

Registriert seit: 22. Jun 2020
20 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: TBitmap mit Alpha-Channel

  Alt 15. Jul 2020, 11:03
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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