Windows CE – building a transparent picturebox
/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