Da immer wieder das Problem auftritt das Beispielsweise PNG-Bilder trotz Transparenz im Compact Framework nicht transparent erscheinen gibt es folgende Lösung um das Problem zu lösen.
Dazu wird die Methode DrawImage mit folgender Überladung aus dem System.Graphics Namespace verwendet. Zu beachten ist das nicht alle Überladungen wie man sie aus dem normalen Framework kennt verfügbar sind.
Dazu wird die Methode DrawImage mit folgender Überladung aus dem System.Graphics Namespace verwendet. Zu beachten ist das nicht alle Überladungen wie man sie aus dem normalen Framework kennt verfügbar sind.
Public Sub DrawImage(ByVal image As System.Drawing.Image, ByVal destRect As System.Drawing.Rectangle, ByVal srcX As Integer, ByVal srcY As Integer, ByVal srcWidth As Integer, ByVal srcHeight As Integer, ByVal srcUnit As System.Drawing.GraphicsUnit, ByVal imageAttr As System.Drawing.Imaging.ImageAttributes)
image
Das Bild welches gezeichnet werden soll.
desRect
Das Rectangle in welches das Bild gezeichnet werden soll. Dieses kann direkt per "new Rectangle(x, y, w, h)" im Methodenaufruf erstellt werden.
srcX, srcY, srcWidth, srcHeight
Der Bereich welcher einen Ausschnitt oder das gesamte Bild darstellt. Wenn man das ganze Bild darstellen möchte gibt man hier einfach die Daten des image-Objekts an.
srcUnit
Die Auswahl beschränkt sich sowieso nur auf "Pixel".
imageAttr
Darauf komme ich gleich zurück.
Damit wird zwar das Bild nun gezeichnet, allerdings noch nicht Transparent. Dazu muss man vorher ein Objekt vom Typ ImageAttributes instanzieren.
Dim imgAttr AS ImageAttributes
Anschliessend weist man der SetColorKey-Methode des imgAttr Objekts die Farbe zu welche transparent erscheinen soll. Man muss zwei Farben angeben, gibt aber einfach zweimal die selbe an. Beispiel mit rot.
imgAttr.SetColorKey(Color.red, Color.red)
Nun muss nur noch die DrawImage-Methode aufgerufen werden und um das imgAttr ergänzt werden und schon erhält man ein tranparentes Bild. Wichtig ist dass das Bild als Bitmap gespeichert ist und den Bereich welcher transparent erscheinen soll z.B. rot eingefärbt hat.