Icon Skalieren mit GDI+

24/10/2007 - 14:19 von M.Keller | Report spam
Hallo,
ich skaliere ein Icon mit GDI+. Das Icon Handle hole ich mit ExtractIconEx,
und erstell mir die Bitmap mit GdipCreateBitmapFromHICON.
Ich zeichne mit GdipDrawImageRectI.
Das funktioniert soweit auch ganz gut, nur wird ein unschöner schwarzer Rand
mit gezeichnet.

Ich habe testweise versucht das Icon mit DrawIconEx in einen DC (Picturebox)
zu zeichnen, und mir dieses Bild
per GdipCreateBitmapFromHBITMAP zu holen und zu zeichnen. Die Qualitàt ist
hier astrein, nur geht mir die Transparenz flöten...:-((

Kann man beim zweiten Verfahren irgendwie die Transparenz (Farbe) erhalten
oder neu setzen?
Oder gibt es eine andere Lösung?(mit GDi+)

Besten Dank!

Manuel
 

Lesen sie die antworten

#1 Thorsten Albers
24/10/2007 - 14:39 | Warnen spam
M.Keller schrieb im Beitrag
...
Hallo,
ich skaliere ein Icon mit GDI+. Das Icon Handle hole ich mit


ExtractIconEx,
und erstell mir die Bitmap mit GdipCreateBitmapFromHICON.
Ich zeichne mit GdipDrawImageRectI.
Das funktioniert soweit auch ganz gut, nur wird ein unschöner schwarzer


Rand
mit gezeichnet.



Da werden wohl irgendwo die angegebenen Maße nicht stimmen.

Ich habe testweise versucht das Icon mit DrawIconEx in einen DC


(Picturebox)
zu zeichnen, und mir dieses Bild
per GdipCreateBitmapFromHBITMAP zu holen und zu zeichnen. Die Qualitàt


ist
hier astrein, nur geht mir die Transparenz flöten...:-((
Kann man beim zweiten Verfahren irgendwie die Transparenz (Farbe)


erhalten
oder neu setzen?
Oder gibt es eine andere Lösung?(mit GDi+)



Eine Bitmap kennt keine Transparenz. Um eine Bitmap dennoch transparent zu
zeichnen, brauchst Du eine entsprechende Maske für die Bitmap. Ein Icon ist
letztlich auch nur eine Bitmap, nur daß es diese Maske bereits mitbringt:
1. Zeichnen des Icon-Bildes
DrawIconEx(..., DI_IMAGE)
2. Gezeichnete Graphik in Bild-Bitmap holen
3. Zeichnen der Icon-Maske
DrawIconEx(..., DI_MASK)
4. Gezeichnete Graphik in Masken-Bitmap holen

Ansonsten gibt es auch noch andere nützliche Funktionen wie z.B.
CopyImage() und insbesondere GetIconInfo() (welches Dir gleich die Bitmaps
von Bild und Maske per Handles liefert).

-
THORSTEN ALBERS Universitàt Freiburg
albers@
uni-freiburg.de
-

Ähnliche fragen