Public Class Lebel3D
Inherits System.Windows.Forms.UserControl¡¡¡¡
#Region " Windows ´°ÌåÉè¼ÆÆ÷Éú³ÉµÄ´úÂë "¡¡¡¡
Public Sub New()
MyBase.New()¡¡¡¡
'¸Ãµ÷ÓÃÊÇ Windows ´°ÌåÉè¼ÆÆ÷Ëù±ØÐèµÄ¡£
InitializeComponent()¡¡¡¡
'ÔÚ InitializeComponent() µ÷ÓÃÖ®ºóÌí¼ÓÈκγõʼ»¯
mCaption = "Label3D"
mAlignment = Align.CenterMiddle
mAutoSize = False
mEffect = Effect3D.Raised
setstyle(ControlStyles.ResizeRedraw, True)
End Sub¡¡¡¡
'UserControl1 ÖØÐ´ dispose ÒÔÇåÀí×é¼þÁÐ±í¡£
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¡¡¡¡
'Windows ´°ÌåÉè¼ÆÆ÷Ëù±ØÐèµÄ
Private components As System.ComponentModel.IContainer
'×¢Ò⣺ÒÔϹý³ÌÊÇ Windows ´°ÌåÉè¼ÆÆ÷Ëù±ØÐèµÄ
'¿ÉÒÔʹÓà Windows ´°ÌåÉè¼ÆÆ÷Ð޸Ĵ˹ý³Ì¡£
'²»ÒªÊ¹ÓôúÂë±à¼Æ÷ÐÞ¸ÄËü¡£
Me.Name = "Label3D"¡¡¡¡
End Sub¡¡¡¡
#End Region¡¡¡¡
Private Shared mAlignment As Align
Private Shared mAutoSize As Boolean
Private Shared mEffect As Effect3D
Private mCaption As String¡¡¡¡
Public Property Alignment() As Align
Get
Return mAlignment
End Get
Set(ByVal Value As Align)
mAlignment = Value
Invalidate()
End Set
End Property¡¡¡¡
Public Property AutoSize() As Boolean
Get
Return mAutoSize
End Get
Set(ByVal Value As Boolean)
mAutoSize = Value
Invalidate()
End Set
End Property¡¡¡¡
Public Property Effect() As Effect3D
Get
Return mEffect
End Get
Set(ByVal Value As Effect3D)
mEffect = Value
Invalidate()
End Set
End Property¡¡¡¡
Public Property Caption() As String
Get
Return mCaption
End Get
Set(ByVal Value As String)
mCaption = Value
Invalidate()
End Set
End Property¡¡¡¡
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim lblFont As Font = Me.Font
Dim lblBrush As New SolidBrush(Color.Red)
Dim X, Y As Integer
Dim textSize As SizeF¡¡¡¡
textSize = e.Graphics.MeasureString(mCaption, lblFont)¡¡¡¡
If mAutoSize Then
Me.Width = textSize.Width
Me.Height = textSize.Height
End If¡¡¡¡
Select Case Me.mAlignment
Case Align.BottomLeft
X = 0
Y = Me.Height - textSize.Height
Case Align.BottomMiddle
X = CInt((Me.Width - textSize.Width) / 2)
Y = Me.Height - textSize.Height
Case Align.BottomRight
X = Me.Width - textSize.Width '- 2
Y = Me.Height - textSize.Height
Case Align.CenterLeft
X = 0
Y = (Me.Height - textSize.Height) / 2
Case Align.CenterMiddle
X = CInt((Me.Width - textSize.Width) / 2)
Y = (Me.Height - textSize.Height) / 2
Case Align.CenterRight
X = Me.Width - textSize.Width '- 2
Y = (Me.Height - textSize.Height) / 2
Case Align.TopLeft
X = 0
Y = 0
Case Align.TopMiddle
X = CInt((Me.Width - textSize.Width) / 2)
Y = 0
Case Align.TopRight
X = Me.Width - textSize.Width ' - 2
Y = 0
End Select¡¡¡¡
Dim dispX, dispY As Integer
Select Case mEffect
Case Effect3D.None : dispX = 0 : dispY = 0
Case Effect3D.Carved : dispX = 1 : dispY = 1
Case Effect3D.CarvedHeavy : dispX = 2 : dispY = 2
Case Effect3D.Raised : dispX = -1 : dispY = -1
Case Effect3D.RaisedHeavy : dispX = -2 : dispY = -2
End Select¡¡¡¡
e.Graphics.Clear(Me.BackColor)
lblBrush.Color = Color.White
e.Graphics.DrawString(mCaption, lblFont, lblBrush, X, Y)
lblBrush.Color = Me.ForeColor
If Me.DesignMode Then
e.Graphics.DrawString("Designtime", New Font("verdana", 24, FontStyle.Bold), New SolidBrush(Color.FromArgb(200, 230, 200, 255)), 0, 0)
Else
e.Graphics.DrawString("Runtime", New Font("verdana", 24, FontStyle.Bold), New SolidBrush(Color.FromArgb(200, 230, 200, 255)), 0, 0)
End If
e.Graphics.DrawString(mCaption, lblFont, lblBrush, X + dispX, Y + dispY)
End Sub¡¡¡¡
Private mOnAlignmentChanged As EventHandler
Private mOnAutoSizeChanged As EventHandler
Private mOnEffectChanged As EventHandler
Private mOnCaptionChanged As EventHandler¡¡¡¡
Public Event AlignmentChanged(ByVal sender As Object, ByVal ev As EventArgs)
Public Event AutoSizeChanged(ByVal sender As Object, ByVal ev As EventArgs)
Public Event EffectChanged(ByVal sender As Object, ByVal ev As EventArgs)
Public Event CaptionChanged(ByVal sender As Object, ByVal ev As EventArgs)¡¡¡¡
Protected Overridable Sub OnAlignmentChanged(ByVal e As EventArgs)
Invalidate()
If Not (mOnAlignmentChanged Is Nothing) Then mOnAlignmentChanged.Invoke(Me, e)
End Sub
Protected Overridable Sub OnEffectChanged(ByVal e As EventArgs)
Invalidate()
If Not (mOnEffectChanged Is Nothing) Then mOnEffectChanged.Invoke(Me, e)
End Sub
Protected Overridable Sub OnAutoSizeChanged(ByVal e As EventArgs)
Invalidate()
If Not (mOnAutosizeChanged Is Nothing) Then mOnAutosizeChanged.Invoke(Me, e)
End Sub
Protected Overridable Sub OnCaptionChanged(ByVal e As EventArgs)
Invalidate()
If Not (mOnCaptionChanged Is Nothing) Then mOnCaptionChanged.Invoke(Me, e)
End Sub
End Class¡¡¡¡
Public Enum Align
TopLeft
TopMiddle
TopRight
CenterLeft
CenterMiddle
CenterRight
BottomLeft
BottomMiddle
BottomRight
End Enum¡¡¡¡
Public Enum Effect3D
None
Raised
RaisedHeavy
Carved
CarvedHeavy
End Enum

