AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

WinXP Icons 32 Bit

Ein Thema von Martin K · begonnen am 16. Mai 2006 · letzter Beitrag vom 16. Mai 2006
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#21

Re: WinXP Icons 32 Bit

  Alt 16. Mai 2006, 19:12
Perfekt!!!

Danke, das isses !!!

Wie kann ich denn nur einzelne Bitmaps in die ImageList laden?
Ich will ja nicht immer die komplette Sammlung als ToolBar...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#22

Re: WinXP Icons 32 Bit

  Alt 16. Mai 2006, 19:13
Entweder du schneidest sie vorher aus oder du löschst alle unbrauchbaren Images aus der Imagelist.
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#23

Re: WinXP Icons 32 Bit

  Alt 16. Mai 2006, 19:22
Also, erstmal hier der Code:
So klappts prima zur Laufzeit!

Vorraussetzung:
ToolBar mit genügend ToolButtons.
ImageList1 enthält die normalen Bitmaps,
ImageList2 für den Hover-Effekt.
Beiden ImageList müssen leer sein.

Delphi-Quellcode:
uses
  XPMan, CommCtrl, Consts;
{...}

procedure ConvertTo32BitImageList(const ImageList: TImageList);
const Mask: array[Boolean] of Longint = (0, ILC_MASK);
var TempList: TImageList;
begin
  if Assigned(ImageList) then
  begin
    TempList := TImageList.Create(nil);
    try
      TempList.Assign(ImageList);
      with ImageList do
      begin
        Handle := ImageList_Create(Width, Height, ILC_COLOR32 or Mask[Masked], 0, AllocBy);
        if not HandleAllocated then
          raise EInvalidOperation.Create(SInvalidImageList);
      end;
      Imagelist.AddImages(TempList);
    finally
      FreeAndNil(TempList);
    end;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var b: TBitmap; h: HModule;
begin
  ConvertTo32BitImageList(ImageList1);
  ConvertTo32BitImageList(ImageList2);
  b := TBitmap.Create;
  try
    h := LoadLibrary('shell32.dll');
    if h <> 0 then
      try

        { normal }
        b.LoadFromResourceID(h, 216);
        ImageList1.Add(b, b);
        ToolBar1.Images := ImageList1;

        { hover }
        b.LoadFromResourceID(h, 217);
        ImageList2.Add(b, b);
        ToolBar1.HotImages := ImageList2;

      finally
        FreeLibrary(h);
      end;
  finally
    b.Free;
  end;
  ToolBar1.Flat := True; // für den Hover-Effekt
end;
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: WinXP Icons 32 Bit

  Alt 16. Mai 2006, 19:39
Also mit:
  ImageList1.Delete(Index); lösche ich dann einfach die Bitmaps, die ich nicht brauche...

Kann man den Code eigentlich noch verbessern ?

Ich wusste halt nicht, wie ich das schreiben soll:
ImageList1.Add(b, b);

Die Funktion wollte halt zwei Bitmaps haben...

Oder soll ich Image1.AddMasked nehmen?
Was ist hier besser?
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#25

Re: WinXP Icons 32 Bit

  Alt 16. Mai 2006, 20:21
.Add(b, nil) schätze ich, jedenfalls solange Masked false ist.
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#26

Re: WinXP Icons 32 Bit

  Alt 16. Mai 2006, 20:57
Hab mal zum Testen meine Systemfarbtiefe auf 16 Bit gestellt (sollte ja auch damit möglichst kompatibel sein).
Wollte mal gucken, was mit dem Alpha-Kanal passiert...

Dabei habe ich folgendes festgestellt:
bei ImageList1.Add(b, nil) oder ImageList1.Add(b, b) haben die Symbole einen schwarzen Hintergrund
(sieht besch... aus).

Wenn ich dagegen:
  ImageList1.AddMasked(b, clBlack); schreibe, so ist die Transparenz wie auf dem Bild von Beitrag #19.
Das ist für 16 Bit ja ganz in Ordnung...
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 20: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