cette source montre comment afficher dans un formulaire une image avec un degré de transparence
Cette source utilise 4 fonctions clef :
- System.Drawing.Bitmap(..., System.Drawing.Imaging.PixelFormat.Format32bppArgb) pour creer une image avec le canal Alpha
- System.Drawing.Bitmap.LockBits et System.Drawing.Bitmap.UnlockBits pour verouiller/déverouiller la zone mémoire où sont stockés les données de l'image
- System.Runtime.InteropServices.Marshal.Copy pour copier ces données dans une zone de travaille
Source / Exemple :
''' <summary>
''' affiche l'image de P_Ori dans P_Dest avec le degré de transparence spécifié par TB_Transparence
''' </summary>
''' <remarks></remarks>
Private Sub Display()
Dim bmp As New Bitmap(P_Ori.Image.Width, P_Ori.Image.Height, Imaging.PixelFormat.Format32bppArgb)
Dim r As New Rectangle(0, 0, P_Ori.Image.Width, P_Ori.Image.Height)
Dim r_ori As New Rectangle(0, 0, P_Ori.Image.Width, P_Ori.Image.Height)
Dim g As Graphics = Graphics.FromImage(bmp)
g.DrawImage(Me.P_Ori.Image, r, r_ori, GraphicsUnit.Pixel)
Dim bmpData As Imaging.BitmapData = bmp.LockBits(r, Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format32bppArgb)
Dim TailleBuffer As Integer = bmpData.Stride * bmp.Height
Dim rgbValues(TailleBuffer - 1) As Byte
System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, rgbValues, 0, TailleBuffer)
Dim T As Byte = CType(Me.TB_Transparence.Value, Byte)
For counter As Integer = 3 To rgbValues.Length - 1 Step 4
If (rgbValues(counter) > T) Then rgbValues(counter) = T
Next
System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, bmpData.Scan0, TailleBuffer)
bmp.UnlockBits(bmpData)
Me.P_Dest.Image = bmp
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.