Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TComboboxEx - Icons sind schwarz (https://www.delphipraxis.net/169542-tcomboboxex-icons-sind-schwarz.html)

FXL 27. Jul 2012 14:15

TComboboxEx - Icons sind schwarz
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute,

vielleicht ist es ja momentan einfach zu warm zum programmieren, aber ich seh den Fehler nicht. Gibt es einen Grund warum meine Icons in der Liste schwarze sind?

Pfad und Name der Bilder stimmen!

Zuweisen tue ich mittels: TCombobox.Images := TImageList



Gruß

mkinzler 27. Jul 2012 14:17

AW: TComboboxEx - Icons sind schwarz
 
Möglichweise liegt es an den Einstellungen zur Transparenz.

FXL 27. Jul 2012 14:28

AW: TComboboxEx - Icons sind schwarz
 
bei was bzw. was könnte falsch sein?

meinst du, dass evtl. das obere linke Pixel als transparent Farberkennung genommen wird und dies bei einer Deutschlandflagge ja schwarz ist?

Wenn es so wäre, dann müsste aber die englische Flagge weiß, rot oder blau sein?

Bernhard Geyer 27. Jul 2012 14:30

AW: TComboboxEx - Icons sind schwarz
 
Sind evtl. PNGs in der ImageList aber die Komponente wurde nicht für PNG's angepasst?

FXL 27. Jul 2012 14:44

AW: TComboboxEx - Icons sind schwarz
 
nein, alles BMPs - und die Bildfläche ist voll ausgefüllt

himitsu 27. Jul 2012 16:04

AW: TComboboxEx - Icons sind schwarz
 
Wieviele Farben (BitsProPixel) haben die Bitmaps?

Irgendwo DoubleBuffered aktiv?

ConnorMcLeod 27. Jul 2012 16:12

AW: TComboboxEx - Icons sind schwarz
 
Das erinnert mich sehr stark an meine Frage von vor zwei Wochen. Es liegt an der Art und Weise, wie die Grafiken der ImageList zugewiesen werden. Ich bin dann den Weg über eine Zwischen-Bitmap (oder TImage) gegangen, dann hat es gepasst.

FXL 27. Jul 2012 22:13

AW: TComboboxEx - Icons sind schwarz
 
@himitsu

zu Punkt 1. - K.A. bin nicht mehr auf Arbeit und kanns nicht mittel Photshop kontrolieren

zu Punkt 2. - Ja, ist an


@ConnorMcLeod

Geladen wird über TBitmap.loadFromFile(....)

und die Bitmaps werden in einer TImageList.add(tBitmap) gesetzt und der Combobx zugewiesen TCombobox.Images := TImageList

kannst du mir evtl. mal ein Codeauszug von deiner Lösung mitteilen


Gruß und Danke für die Unterstützung

himitsu 27. Jul 2012 23:10

AW: TComboboxEx - Icons sind schwarz
 
Zitat:

Zitat von FXL (Beitrag 1176115)
zu Punkt 2. - Ja, ist an

Das mein ich ja ... schalte es mal aus :zwinker:

ConnorMcLeod 28. Jul 2012 05:02

AW: TComboboxEx - Icons sind schwarz
 
Mit dem Unterschied/Vorbehalt, daß es bei mir um Icons ging:

Delphi-Quellcode:
procedure AddIconToImageList(
        const AFileName       : string
      ; var  AAddToImageList : TImageList
      );
var
  licnIcon   : TIcon;
  lsfiFileInfo: SHFILEINFO;
  limgInter  : TImage;
  lsExePath  : string;
begin
  // Create a temporary TIcon
  licnIcon := TIcon.Create;
  limgInter := TImage.Create(nil);
  try
    //Get The Icon That Represents The File
    FillChar(lsfiFileInfo, SizeOf(lsfiFileInfo), 0);
    SHGetFileInfo(PChar(AFileName + #0), 0, lsfiFileInfo, SizeOf(lsfiFileInfo), SHGFI_ICON {or SHGFI_LARGEICON});
    licnIcon.Transparent := True;
    licnIcon.Handle := lsfiFileInfo.hIcon;

    // add the icon to the imagelist:
    if Assigned(AAddToImageList) then
    begin
      limgInter.Width := licnIcon.Width;
      limgInter.Height := licnIcon.Height;
      limgInter.Picture.Bitmap.Width := licnIcon.Width;
      limgInter.Picture.Bitmap.Height := licnIcon.Height;
      limgInter.Canvas.FillRect(Rect(0, 0, limgInter.Picture.Bitmap.Width, limgInter.Picture.Bitmap.Height));
      limgInter.Transparent := True;
      limgInter.Picture.Bitmap.TransparentColor := clWhite;

      if DrawIcon(limgInter.Canvas.Handle, 0, 0, licnIcon.Handle) then
      begin
        //
      end
      else
      begin
        licnIcon.ReleaseHandle;
        licnIcon.Handle := GetIconHandleOfExtension(ExtractFileExt(AFileName), lsExePath);
        DrawIcon(limgInter.Canvas.Handle, 0, 0, licnIcon.Handle);
      end;

      AAddToImageList.AddMasked(limgInter.Picture.Bitmap, limgInter.Picture.Bitmap.TransparentColor);
    end;

    DestroyIcon(lsfiFileInfo.hIcon);
  finally
    FreeAndNil(licnIcon);
    FreeAndNil(limgInter);
  end;
end;
HTH


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 Uhr.
Seite 1 von 2  1 2      

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