2010-09-28 5 views

Antwort

11

Sie sagen nicht, was der Zweck dieses ist, und es gibt eine Reihe von Möglichkeiten, Symbole zu erhalten und eine Methode kann besser als eine andere sein, je nach dem Zweck.

jedoch eine beliebige Anzahl von „großen“ (32x32) zu extrahieren und/oder „klein“ (16x16) Symbole * aus einer beliebigen Datei, verwenden, um die Funktion ExtractIconEx. Auf diese Weise können Sie ein oder mehrere Symbole dieser beiden Standardgrößen aus einer Symboldatei (.ico), EXE oder DLL extrahieren. Eine Symboldatei kann mehrere Bilder enthalten und mit dieser Funktion können Sie alle Bilder erhalten.

Die Funktion schreibt in ein Array von Handles, von denen jedes der Handle-Eigenschaft einer TIcon-Instanz zugewiesen werden kann. Dann können Sie die TIcon methods wie gewohnt verwenden, wenn Sie die TIcon auf andere Weise geladen haben. Beachten Sie, dass Delphi XE neu in die Bitmap via the Assign method kopiert werden kann. That article zeigt auch, wie auf Zugriff auf alle die Aktie (eingebaute/Standard) Windows-Symbole, wenn das passiert, was Sie suchen.

(Seitennotiz: Ich denke, die TIcon Klasse können Sie von einer Datei über seine LoadFromFile Methode laden - das scheint in der Dokumentation zu fehlen, aber ich bin ziemlich sicher, dass es existiert. Aus dem Speicher, der nur eine einzige lädt Symbol)

(*) Eigentlich "groß" und "klein" kann anders zu 32x32 und 16x16. verwenden die GetSystemMetrics Funktion mit dem SM_CXICON, SM_CYICON, SM_CXSMICON und SM_CYSMICON Flaggen zu f Ermitteln Sie die Dimensionen jedes Typs.

+0

@David, danke! Ich habe TIcon-Objekt und ich muss alle Bilder daraus extrahieren. Gibt es eine Möglichkeit, dies zu tun, ohne das Symbol über die SaveToFile-Methode in eine Datei zu speichern? – Branko

+0

TIcon wird ein Symbolbild sein. Mit 'ExtractIconEx' würden Sie ein TIcon pro Symbolbild erstellen, das es extrahiert. Sie können dann auf das Bild des Symbols zugreifen, indem Sie es einer Bitmap zuweisen. (Haben Sie ein Array von Handles gefüllt? Versuchen Sie zweimal 'ExtractIconEx' aufzurufen, das erste Mal mit' nIconIndex' auf -1 und beide Array - Parameter 'nil' und es wird die Anzahl der Icons zurückgegeben. Rufen Sie es erneut mit einem Array mit dieser Größe Weitere Informationen finden Sie im MSDN-Artikel dazu.) –

+0

@David, TIcon ist ein Bildsymbol, wenn es von ExtractIconEx abgerufen wird, aber was ist, wenn ein vorhandenes TIcon-Objekt mehr als ein Bild enthält. Wenn ich TIcon mit 4 Bildern in Datei speichern (oIcon.SaveToFile) und diese Datei mit IconEditor öffne, kann ich alle 4 Bilder sehen und ich kann alle 4 Bilder mit ExtractIconEx extrahieren. Ist es möglich, alle Bilder aus dem TIcon-Objekt zu extrahieren, TIcon nicht in einer Datei zu speichern und ExtractIconEx zu verwenden? – Branko

Verwandte Themen