Прозрачный фон у Label'a на Windows CE 5.0
Порыскал по Инету, нашел решение только для XP с помощью свойства label.transparent, но на СЕ такого свойства у label нет. После продолжительных поисков вроде бы нашел решение: создается новый класс transparentlabel, в нем стирается фон и рисуется текст. Код прилагается:
Public Class TransparentLabel
Inherits Control
Protected Overrides Sub OnPaintBackground(ByVal e As PaintEventArgs)
'do nothing
End Sub
Private bPaintOnce As Boolean = False 'flag to prevent infinite loop
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
If (bPaintOnce = False) Then
bPaintOnce = True
Me.Visible = False
Me.Parent.Invalidate(Me.Bounds)
Me.Parent.Update()
Me.Visible = True
Return
Else
bPaintOnce = False
Dim g As Graphics = e.Graphics
Dim myBrush As SolidBrush = New SolidBrush(Me.ForeColor)
g.DrawString(Me.Text, Me.Font, myBrush, 1, 1)
g.Dispose()
End If
End Sub
End Class
Затем в Private Sub Form1_Load()
Dim label1 As New TransparentLabel
Me.Controls.Add(label1)
Label1.BringToFront()
label1.text=temperature
....
Все бы хорошо, но не тут-то было...:(, текущее значение рисуется поверх предыдущего без стирания. То есть после нескольких изменений значения в label получается фигня.