![]() |
Alphablending und die ImageList
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo :)
ich habe u.a. PNG's (48x48 Pixel groß) in eine ImageList geladen und diese anschließend auf Depth32Bit gestellt. Betrachte ich nun diese Bilder zur Laufzeit, sind sie leider wie im Anhang sehr pixelig an den Rändern, da offensichtlich der Alpha-Channel nicht richtig unterstützt wird. Kann man das beheben? In einer PictureBox klappt es. Danke :) |
Re: Alphablending und die ImageList
Du musst der Imagelist nur beibringen, dass sie Alpha-Kanäle verkraften soll. Code-Fetzen, den ich aus dem Usenet habe:
Delphi-Quellcode:
type
TILConvertColorType = ( cctColor8, // ICL_COLOR8 cctColor16, // ICL_COLOR16 cctColor24, // ICL_COLOR24 cctColor32 // ICL_COLOR32 ); procedure ILConvertColor (ImageList : TImageList; const ColorType : TILConvertColorType); var IL : TImageList; Flags : LongWord; begin Flags := ILC_MASK; case ColorType of cctColor8 : Flags := Flags or ILC_COLOR8; cctColor16 : Flags := Flags or ILC_COLOR16; cctColor24 : Flags := Flags or ILC_COLOR24; cctColor32 : Flags := Flags or ILC_COLOR32; end; IL := TImageList.Create(nil); try IL.Assign(ImageList); with ImageList do Handle := ImageList_Create(Width, Height, Flags, Count, AllocBy); ImageList.Assign(IL); finally IL.Free; end; end; Verwendung: Zur Designzeit ganz normal die Bilder in die Liste einfügen, dann zur Laufzeit die Liste einmal mit obiger Funktion konvertieren. |
Re: Alphablending und die ImageList
Hallo,
@Daniel: hier geht's doch um .Net. Gruß xaromz |
Re: Alphablending und die ImageList
Danke Daniel, aber wie xaromz schon geschrieben habe, suche ich etwas ähnliches für .NET.
Wobei die Farbtiefe - wie gesagt - schon auf 32Bit steht :? . |
Re: Alphablending und die ImageList
Sollte es dafür wirklich keine Lösung geben?
|
Re: Alphablending und die ImageList
Da mich das Problem noch immer sehr stört, hole ich es noch mal hervor :).
|
Re: Alphablending und die ImageList
hilft dir das vielleicht?
![]() EDIT: wenn du das benutzt musst dus natürlich zu D.Net umschreiben. EDIT: EIn anderer Lösungsansatz wird hier vorgeschlagen, nämlich die CommonControls Version 6 zu verwenden. Die sollen das anschienend von sich aus können: ![]() |
Re: Alphablending und die ImageList
Vielen Dank :).
Also die Lösung mit der Manifest-Datei scheint leider nicht zu klappen. Ich nehme zumindest mal an, dass es reicht, die Datei mit dem richtigen Namen ins App-Verzeichnis zu legen. Die andere Lösung werde ich mir nachher mal genauer anschauen, wenn mir meine Account-Daten von CodeProject wieder eingefallen sind :mrgreen:. Auf dem ersten Blick sieht es aber so aus, als ob die Lösung nur zur Laufzeit arbeitet. |
Re: Alphablending und die ImageList
Das ist ein grundlegendes .NET Problem. in C# bin ich dazu übergegangen die PNG's in die Resourcen zu packen und von da aus via Ownerdraw auf die Controls zu zeichnen. Nicht elegant, aber der vermutlich einfachste Weg. Welches png ich brauch hab ich dafür jeweils im Tag festgelegt.
Inwieweit das Brauchbar auf Delphi.NET umsetzbar ist, weiss ich aber nicht. |
Re: Alphablending und die ImageList
Die Lösung mit der Manifest Datei kann eigentlich gar nicht mein Problem lösen, denn durch die Verwendung der Visual Styles und dem anschließenden Aufruf von doEvents führt dazu, dass die CommonControls Version 6 sowieso verwendet wird.
Interessanter Weise haben die Bilder keine Fehler, wenn ich sie direkt in eine PictureBox lade (also auf die ImageList verzichte...). Da ich das insbesondere für ein eigenes Control brauche (bei den anderen kleineren Icons sieht man es eh kaum), kann ich eigentlich auch auf die ImageList verzichten und mit Ressourcen arbeiten. Nur wie füge ich die geschickt mit Delphi hinzu? Beim VS ist das ja recht einfach. Bei Delphi habe ich bisher gar keine Möglichkeit gefunden, die Ressourcen direkt aus der IDE zu bearbeiten (Liegt wahrscheinlich auch daran, dass ich vorwiegend VS nutze :P). |
Re: Alphablending und die ImageList
Ich habe gerade mal ein wenig nach Ressourcen-Editoren gegoogelt und auch einen gefunden, der auch das richtige Format für Delphi liefert. Der vom VS 05 funktioniert ja leider nicht.
![]() Ich werde wohl bei der meiner Komponente auf die ImageList verzichten. Nach einer sauberen Lösung suche ich aber dennoch :P |
Re: Alphablending und die ImageList
Naja... für .NET 2 unter C# werd ich wohl eine overhead-Komponente speziell für Tab-Controls und Tree- bzw. ListViews basteln. Die wird dann wohl ein paar der API-Funcs aus dem Artikel nutzen um eine Imagelist zu füllen. Für Delphi.NET wird dir das aber wohl nicht helfen.
|
Re: Alphablending und die ImageList
Unter .NET 2.0 gibt es das Problem auch noch?
Da ist mir das gar nicht aufgefallen :wink:. Hätte gedacht, das Problem gibt es nur unter .NET 1.1. In 2.0 ist das Arbeiten mit den Ressourcen im VS 05 auch wesentlich angenehmer als mit Turbo Delphi :roll:. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 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