Wie zeichne ich eine skalierte Version von Bildern aus dem System ImageList?

8

Ich erstelle und initialisiere TImageList ...

%Vor%

Ich erhalte das System-ImageList-Handle für kleine Icons (16x16) ...

%Vor%

Und jetzt möchte ich die Symbole auf meinem Kontrollbereich auf 50x50 Pixel skalieren. Wie mache ich das?

    
Marus Nebunu 25.11.2014, 19:50
quelle

3 Antworten

9

Upscaling kleine Symbole ist nie eine gute Idee. Das Symbol 16X16 ist zu klein, um es anderweitig zu verwenden.

Zu Beginn können Sie mit

größere Shell-Bilder erhalten %Vor%

Diese Bilder werden im Allgemeinen 32x32 Pixel groß sein, aber um auf der sicheren Seite zu sein (wenn Windows im Hoch-DPI-Modus läuft), können Sie die korrekte Größe vom System

erhalten %Vor%

Sie können auch noch größere Shell-Images mit SHGetImageList Ссылка

Um ein Icon von Ihrer ImageList abzurufen (falls ImageList Icons enthält, und in Ihrem Fall tut es das) können Sie verwenden:

%Vor%

Für die Skalierung von Symbolen unter Beibehaltung der Transparenz für benutzerdefinierte Dimensionen können Sie folgenden Code verwenden:

%Vor%     
Dalija Prasnikar 25.11.2014, 20:48
quelle
7

Da ein extrahiertes Icon nicht mit StretchDraw gestreckt werden kann und ein extrahiertes Bitmap die Transparenz verlieren würde, könnte es eine Möglichkeit sein, die Icons zu extrahieren und den Ziel-Canvas mit SetWorldTransform :

%Vor%

Ein Beispiel mit 250 als gewünschte Größe:

    
bummi 25.11.2014 20:21
quelle
3

TImageList unterstützt das Zeichnen eines skalierten Bildes nicht, es zeichnet das Bild wie es ist. Die einzige Option ist, dass Sie die X / Y-Koordinaten angeben können, an denen das Bild auf dem Ziel-Canvas gezeichnet werden soll.

Um ein Bild zu skalieren, müssen Sie das gewünschte Bild zunächst in ein temporäres TBitmap extrahieren und die Methode Draw() aufrufen, mit der Sie das gewünschte Rechteck auf dem Ziel-Canvas festlegen können. Die Bitmap wird dann ihre Zeichnung dehnen / skalieren, um das Rechteck nach Bedarf zu füllen.

    
Remy Lebeau 25.11.2014 20:05
quelle

Tags und Links