Surprise! PictureBox in Windows CE doesn’t support transparency.
Diving into yet another old forgotten corner of the .NET compact framework.
And just in case the mention of Compact Framework hasn’t scared you to death, today’s code will be in Visual Basic .NET
Imports System.Drawing.Imaging
Imports System.ComponentModel
Public Class TransparentPictureBox
Inherits PictureBox
Private _transparentColor As Color = Color.White
Public Property TransparentColor() As Color
Get
Return _transparentColor
End Get
Set(ByVal value As Color)
_transparentColor = value
End Set
End Property
Protected Overloads Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
If Not Me.Image Is Nothing Then
Dim pictureBounds As New Rectangle(0, 0, Me.Width, Me.Height)
Dim imageBounds As New Rectangle(0, 0, Me.Image.Width, Me.Image.Height)
Dim attributes As New ImageAttributes()
' set color to be set to transparent - if you don't paint the background below, then these pixels
' will appear black
attributes.SetColorKey(Me.TransparentColor, Me.TransparentColor)
e.Graphics.DrawImage(Me.Image, pictureBounds, imageBounds.X, imageBounds.Y, imageBounds.Width, imageBounds.Height, GraphicsUnit.Pixel, attributes)
End If
End Sub
Protected Overloads Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
' paint background color
Dim brush As SolidBrush
brush = New SolidBrush(Me.Parent.BackColor)
e.Graphics.FillRectangle(brush, Me.ClientRectangle)
End Sub
End Class