Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Прозрачный фон у Label'a на Windows CE 5.0

50K
06 июля 2009 года
Slava111
1 / / 06.07.2009
Есть picturebox с картинкой, на нем лежит label, в который выводится непрерывно меняющееся числовое значение. Необходимо сделать фон у label прозрачным, то есть чтобы было видно только текущее значение.
Порыскал по Инету, нашел решение только для 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 получается фигня.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог