在VB.NET中定制一个3D的Label的源码 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 在VB.NET中定制一个3D的Label的源码 (http://www.webasp.net/article/5/4118.htm) |
| -- 作者:未知 -- 发布日期: 2003-07-12 |
| 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 窗体设计器修改此过程。 '不要使用代码编辑器修改它。 <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() ' 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 |
| webasp.net |