![]() |
Image aus TImage als Icon in einer TImageList
Das Topic sagt eigendlich schon alles.
Mein Problem ich steht wie nen Kuh vor einer Aphotheke :wall: und weis nicht, wie ich ein Bild, welches in einem TImage ist in ein Icon für die TImageList speichere?! :gruebel: |
Re: Image aus TImage als Icon in einer TImageList
Hallo Doreen,
du hast eine BMP-Datei in eine TImage-Komponente geladen und möchtest Sie von dort in eine ImageList übernehmen?
Delphi-Quellcode:
Grüße vom marabu
with ImageList do
InsertMasked(Count, Picture.Bitmap, Picture.Bitmap.TransparentColor); |
Re: Image aus TImage als Icon in einer TImageList
habe schon verschieden functionen die ich im Internet gefunden habe probiert.
Auch deinen Vorschlag... Aber wie auch bei den Functionen die ich fand ist auch bei deinem Vorschalg die gleiche Fehlermeldung! Zitat:
ich fand 1
Delphi-Quellcode:
procedure bmp2ico(Image: TImage; FileName: TFilename);
var Bmp: TBitmap; Icon: TIcon; ImageList: TImageList; begin Bmp := TBitmap.Create; Icon := TIcon.Create; try Bmp.Assign(Image.Picture.Bitmap); ImageList := TImageList.CreateSize(32, 32); try ImageList.AddMasked(Bmp, Bmp.TransparentColor); ImageList.GetIcon(0, Icon); Icon.SaveToFile(FileName); finally ImageList.Free; end; finally Bmp.Free; Icon.Free; end; end; ich fand 2
Delphi-Quellcode:
function BitmapToIcon_4(const Source: TBitmap): HICON;
var bmpMask: TBitmap; bmpTemp: TBitmap; pInfo: TIconInfo; begin bmpMask := TBitmap.Create(); bmpMask.Width := 16; bmpMask.Height := 16; bmpMask.Canvas.Brush.Color := clFuchsia; bmpMask.Canvas.FillRect(Rect(0, 0, bmpMask.Width, bmpMask.Height)); bmpTemp := TBitmap.Create(); bmpTemp.Assign(Source); with pInfo do begin fIcon := True; xHotspot := 0; yHotspot := 0; hbmMask := bmpMask.Handle; hbmColor := bmpTemp.Handle; end; Result := CreateIconIndirect(pInfo); FreeAndNil(bmpTemp); FreeAndNil(bmpMask); end; aber alle diese funktionieren bei mir nicht ;( |
Re: Image aus TImage als Icon in einer TImageList
Du kannst nicht wahllos irgendwelchen Code ausprobieren. Eine ImageList nimmt Bilder mit gleichem Format auf. Das Format konfigurierst du vor dem Laden der Bilder. Wenn dein Image.Picture.Bitmap geladen werden soll, dann muss es das festgelegte Format haben. Notfalls musst du dein Bild erst auf dieses Format bringen.
marabu |
Re: Image aus TImage als Icon in einer TImageList
ok anders ich versuche mal zu erklären was ich eigentlich Vorhabe!
Ich scanne das System32 Verzeichnis nach EXE udn DLLs - bez. nach deren Icons. Diese werden dann in einer ListView angezeigt soweit so gut. Nun damit ich nicht immer wieder neuscannen muss, habe ich mich für die Komponente JvImageList entschieden da diese ihren Inhalt in einer Datei speichern kann! Wo wir nun beim Problem sind ich muss aufgrund der Schwärzenrändern um den Icons diesen Code * benutzten Nun leider ist es so das wenn ich das nutzte die Icons die gespeichert werden unbrauchbar sind - beim laden sehe ich keine Icons. erst wenn ich den Code deaktiviere funktioniert das so wie ich es haben will nur leider mit "hässlichen " Icons. Daher dachte ich, gehe ich einen Umweg über eine TImage und einer 2ten JvImageList die nicht vom Code aus der OnCreate beeinflusst wurde. Leider war dies auch nicht möglich auch bei dem "Umweg" sind die Icons nicht da ;( Hoffe ich habe mein Problem "gut" beschrieben und jemand kann mir nun dadurch besser helfen ;) Danke Euch für Eure Mühen... Gruss Doreen *
Delphi-Quellcode:
[edit=sakura] Push-Beitrag entfernt. Bitte mind. 24 Stunden warten. Mfg, sakura[/edit]
procedure TForm1.FormCreate(Sender: TObject);
var SHFileInfo: TSHFileInfo; SysIcons: THandle; begin try SysIcons := SHGetFileInfo(PChar(copy(ParamStr(0), 1, 3)), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_SYSICONINDEX OR SHGFI_LARGEICON); finally DestroyIcon(SHFileInfo.hIcon); end; JvImageList1.Handle := SysIcons; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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-2025 by Thomas Breitkreuz