AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Image aus TImage als Icon in einer TImageList
Thema durchsuchen
Ansicht
Themen-Optionen

Image aus TImage als Icon in einer TImageList

Offene Frage von "delphinia"
Ein Thema von delphinia · begonnen am 16. Mär 2006 · letzter Beitrag vom 17. Mär 2006
Antwort Antwort
delphinia

Registriert seit: 16. Feb 2006
444 Beiträge
 
Delphi 11 Alexandria
 
#1

Image aus TImage als Icon in einer TImageList

  Alt 16. Mär 2006, 14:19
Das Topic sagt eigendlich schon alles.

Mein Problem ich steht wie nen Kuh vor einer Aphotheke und weis nicht,

wie ich ein Bild, welches in einem TImage ist in ein Icon für die TImageList speichere?!

Doreen
Gruss Doreen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Image aus TImage als Icon in einer TImageList

  Alt 16. Mär 2006, 18:57
Hallo Doreen,

du hast eine BMP-Datei in eine TImage-Komponente geladen und möchtest Sie von dort in eine ImageList übernehmen?

Delphi-Quellcode:
with ImageList do
  InsertMasked(Count, Picture.Bitmap, Picture.Bitmap.TransparentColor);
Grüße vom marabu
  Mit Zitat antworten Zitat
delphinia

Registriert seit: 16. Feb 2006
444 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Image aus TImage als Icon in einer TImageList

  Alt 16. Mär 2006, 19:07
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:
Ungültige Bildgröße

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 ;(
Doreen
Gruss Doreen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Image aus TImage als Icon in einer TImageList

  Alt 16. Mär 2006, 19:36
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
  Mit Zitat antworten Zitat
delphinia

Registriert seit: 16. Feb 2006
444 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Image aus TImage als Icon in einer TImageList

  Alt 17. Mär 2006, 07:04
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:
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;
[edit=sakura] Push-Beitrag entfernt. Bitte mind. 24 Stunden warten. Mfg, sakura[/edit]
Doreen
Gruss Doreen
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:01 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