Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Transparenz in TListView übernehmen

  Alt 13. Okt 2017, 14:03
...
Völlig richtig. Die PNGs werden nach Erstellung in TBitmaps umgewandelt. Das normale Assign hat hier einen Bug, dass ein Alphablending zu schwarz stattfindet, halbtransparente Bereiche werden also dunkler. Daher kopiere ich zusätzlich (Alphablending funktioniert ja) die Canvasses (CopyRect). TPNGImage unterscheidet sich von TBitmap vor allem darin, dass Scanline und Alphascanline getrennt werden.
...
Danke für den Code. Ich nutze PNG gerade nur, weil die Bilder dann weniger Speicher belegen als Bitmap und man so den Code samt Sourcen besser teilen kann.

...
Habe das jetzt so gemacht, wie ich das beschrieben habe und es funktioniert. Lösung ist angehängt. Lösung für replace weiß ich derzeit nicht, musst du vielleicht lösen, indem du stattdessen die ImageIndexes anpasst.
War gar nicht nötig.
Ich habe mir die Quellen nochmal angesehen. Dort gibt es eine Möglichkeit, neue Bitmaps inkl. Maskenfarbe mit ImageList1.InsertMasked(Idx, aBMP, clTrans); einzufügen. Man kann also entweder vorher das alte Bild löschen und das neue an dessen Position setzen oder man setzt erst das neue Bild dort rein und löscht das (dann) folgende Bild - letzteres schont wohl die Resourcen.

Ich habe den Code nebst Ersetzungsbild nochmal zum Testen angehängt. Danke für Deine ausführliche Hilfe!
Angehängte Dateien
Dateityp: zip ListView.Transparent.2.zip (106,3 KB, 6x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat