|
Лэйбл с тенью |
|
|
Автор: Артём Кривокрисенко
Это контрол, наследующий от стандартного Label. Imports System.Drawing.Color
Public Class ShadowLabel
'Унаследуем класс Label.
Inherits System.Windows.Forms.Label
'Объявим несколько приватных переменных (для свойств)
Private v_ShadowColor As System.Drawing.Color = Green
Private v_ShadowSize As Int32 = 1
Private v_ShadowStep As Int32 = 1
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
InitializeComponent()
End Sub
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Private components As System.ComponentModel.IContainer
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Name = "ShadowLabel"
End Sub
#End Region
'Установка/считывание свойства ShadowColor (цвет тени)
Public Property ShadowColor() As System.Drawing.Color
Get
ShadowColor = v_ShadowColor
End Get
Set(ByVal Value As System.Drawing.Color)
v_ShadowColor = Value
'Перерисуем лейбл
MyBase.Refresh()
End Set
End Property
'Установка/чтение свойства ShadowSize (размер тени)
Public Property ShadowSize() As Int32
Get
ShadowSize = v_ShadowSize
End Get
Set(ByVal Value As Int32)
If Value >= 0 Then
v_ShadowSize = Value
MyBase.Refresh()
End If
End Set
End Property
'Смещение тени
Public Property ShadowStep() As Int32
Get
ShadowStep = v_ShadowStep
End Get
Set(ByVal Value As Int32)
If Value >= 0 Then
v_ShadowStep = Value
MyBase.Refresh()
End If
End Set
End Property
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim i As Int32
'Очистим лейбл
e.Graphics.Clear(MyBase.BackColor)
'Отрисуем тень нужное кол-во раз
For i = v_ShadowSize To 1 Step -1
e.Graphics.DrawString(MyBase.Text, MyBase.Font, New SolidBrush(v_ShadowColor), New RectangleF(i * v_ShadowStep, i * v_ShadowStep, MyBase.Width, MyBase.Height))
Next i
Отрисуем(текст)
e.Graphics.DrawString(MyBase.Text, MyBase.Font, New SolidBrush(MyBase.ForeColor), New RectangleF(0, 0, MyBase.Width, MyBase.Height))
End Sub
End Class
|
|
|
|
|
|
|