2017-09-25 2 views
-1

J'essaie de trouver un moyen de définir la propriété Image.Flags (espace de noms System.Drawing) pour les images bitmap que je publie à partir d'un script VB à l'aide de .NET Framework 4.5.1. Microsoft's documentation indique que la propriété Image.Flags est une propriété ReadOnly, mais est-il possible de modifier les indicateurs lors de la conversion d'un objet Image en Bitmap?Définition d'Image.Flags pour un objet Bitmap dans VB

Répondre

0

Vous ne définissez pas les indicateurs directement; les drapeaux sont juste utilisés pour décrire le bitmap.

Voici un exemple où nous vérifions si un bitmap a un canal alpha (transparence), puis vérifier un bitmap différent sans un canal alpha

PictureBox1 a l'image de forme avec un fond transparent

enter image description here

Dim b As New Bitmap(PictureBox1.Image) ' this image has alpha 
MessageBox.Show(String.Format("Has Alpha: {0}", (b.Flags And ImageFlags.HasAlpha) > 0)) 
Dim c = New Bitmap(b.Width, b.Height, PixelFormat.Format24bppRgb) ' convert to no alpha 
MessageBox.Show(String.Format("Has Alpha: {0}", (c.Flags And ImageFlags.HasAlpha) > 0)) 

Les MessageBoxes génèrerait Has Alpha: true, Has Alpha: false

Donc, j'ai effectivement mis le drapeau alpha, mais seulement en changeant réellement la propriété sous-jacente correspondante. Si vous ne saviez pas, comme indiqué dans l'exemple, les drapeaux sont un masque de bits et quand And avec une valeur de System.Drawing.Imaging.PixelFormat, on peut vérifier si le drapeau est haut (le résultat est> 0).