AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi PngImageList.Draw() auf TImage.Canvas verliert AlphaKanal
Thema durchsuchen
Ansicht
Themen-Optionen

PngImageList.Draw() auf TImage.Canvas verliert AlphaKanal

Ein Thema von s.h.a.r.k · begonnen am 26. Feb 2011 · letzter Beitrag vom 28. Feb 2011
 
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

PngImageList.Draw() auf TImage.Canvas verliert AlphaKanal

  Alt 26. Feb 2011, 17:47
Guten Abend zusammen,

vorab will ich erst mal meine Idee beschreiben: ich habe im Moment eine Ableitung von TPngImageList, welche einen Timer integriert hat und bei jedem Timer-Event das nächte Bild auf ein TargetImage zeichnet. So kann ich z.B. einen Throbber darstellen und auch beliebig andere Dinge animieren -- ganz nach dem "Vorbild" der GIF-Animation. Der Nutzer sollte eigentlich klar sein: man erzeugt lediglich die gewünschten Bilder, lädt diese in die ImageList und lässt es eben ablaufen.

Nun will ich diese Idee allerdings etwas abstrahieren und eine Art "Linker" basteln, der als Verknüpfung zwischen einer TCustomImageList und einem TImage agiert, d.h. es liegen schon ein TImage und eine TImageList auf der Form und ich liefere eine weitere Komponente, mit der die Bidler aus der Liste auf die TImage-Instanz projeziert werden. Ich will meinen Code somit von der TPngImageList lösen und verallgemeinern. Somit will ich auch weniger Abhängigkeiten schaffen.

So schön dieser Grundgedanke auch sein mag, ich habe beim Zeichnen (FImageList.Draw(...) ) das Problem, dass wenn es sich um eine TPngImageList handelt, der AlphaKanal verloren geht -- es erscheint ein weißer Hintergrund. Die referenzierte ImageList ist ja eine TPngImageList, weswegen die Images darin einen AlphaKanal besitzen. Warum und wo geht denn dieser aber beim Aufruf der Draw-Methode verloren? Eine spezielle Behandlung dieser Klasse will ich unbedingt vermeiden, da das ja nicht Sinn und Zweck ist. Ist evtl. die TPngImageList schuld, da diese die Draw-Methode nicht überschreibt?

Lustigerweise ist es so, dass wenn ich auf auf eine TPaintBox male, der Hintergrund nicht weiß, sondern transparent ist. Ich habe daber bei meiner TImage-Instanz schon ziemlich viel bzgl. den Eigenschaften PixelFormat, AlphaFormat, ColorDepth und was weiß ich noch probiert -> ohne Erfolg. Vielleicht kann hier ja jemand Licht ins Dunkel bringen.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
 


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 16:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz