Afficher une image avec un degré de transparence

Description

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

Codes Sources

A voir également

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.