AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Alphablending und die ImageList

Ein Thema von Alexander · begonnen am 6. Apr 2007 · letzter Beitrag vom 10. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2   
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#1

Alphablending und die ImageList

  Alt 6. Apr 2007, 19:11
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
Angehängte Grafiken
 
Alexander
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Alphablending und die ImageList

  Alt 6. Apr 2007, 19:44
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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Alphablending und die ImageList

  Alt 6. Apr 2007, 20:06
Hallo,

@Daniel: hier geht's doch um .Net.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#4

Re: Alphablending und die ImageList

  Alt 7. Apr 2007, 07:49
Danke Daniel, aber wie xaromz schon geschrieben habe, suche ich etwas ähnliches für .NET.
Wobei die Farbtiefe - wie gesagt - schon auf 32Bit steht .
Alexander
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#5

Re: Alphablending und die ImageList

  Alt 13. Apr 2007, 10:01
Sollte es dafür wirklich keine Lösung geben?
Alexander
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#6

Re: Alphablending und die ImageList

  Alt 9. Sep 2007, 13:42
Da mich das Problem noch immer sehr stört, hole ich es noch mal hervor .
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Alphablending und die ImageList

  Alt 9. Sep 2007, 13:48
hilft dir das vielleicht?
http://www.codeproject.com/cs/miscct...eImagelist.asp

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: http://www.codeproject.com/cs/miscct...23#xx1343223xx
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#8

Re: Alphablending und die ImageList

  Alt 9. Sep 2007, 15:57
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 . Auf dem ersten Blick sieht es aber so aus, als ob die Lösung nur zur Laufzeit arbeitet.
Alexander
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Alphablending und die ImageList

  Alt 9. Sep 2007, 16:12
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.
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#10

Re: Alphablending und die ImageList

  Alt 9. Sep 2007, 16:34
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 ).
Alexander
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 13:37 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