当前位置:首页 > 电脑 > 操作系统 > XP 内容正文

类QQ的XP BUTTON控件

作者: 发布时间:2007-08-14 来源:landlordh【
pdsbx.com

Imports SystemGTp鹰城网
Imports System.EnumGTp鹰城网
Imports System.CollectionsGTp鹰城网
Imports System.ComponentModelGTp鹰城网
Imports System.DrawingGTp鹰城网
Imports System.DataGTp鹰城网
Imports System.Windows.FormsGTp鹰城网
Imports System.Drawing.Drawing2DGTp鹰城网
Imports System.Drawing.DesignGTp鹰城网

Namespace LandlordAspx_xpctrlGTp鹰城网

    Public Class emunTypeGTp鹰城网

        Public Enum XPStyleGTp鹰城网
            Default1GTp鹰城网
            BlueGTp鹰城网
            OliveGreenGTp鹰城网
            SilverGTp鹰城网
        End EnumGTp鹰城网

        Public Enum BtnShapeGTp鹰城网
            RectangleGTp鹰城网
            EllipseGTp鹰城网
        End EnumGTp鹰城网
    End ClassGTp鹰城网

    Friend NotInheritable Class ControlPaintGTp鹰城网

        Private Sub New()GTp鹰城网
        End SubGTp鹰城网

        Public Shared ReadOnly Property BorderColor() As ColorGTp鹰城网
            GetGTp鹰城网
                Return Color.FromArgb(127, 157, 185)GTp鹰城网
            End GetGTp鹰城网
        End PropertyGTp鹰城网

        Public Shared ReadOnly Property DisabledBorderColor() As ColorGTp鹰城网
            GetGTp鹰城网
                Return Color.FromArgb(201, 199, 186)GTp鹰城网
            End GetGTp鹰城网
        End PropertyGTp鹰城网

        Public Shared ReadOnly Property ButtonBorderColor() As ColorGTp鹰城网
            GetGTp鹰城网
                Return Color.FromArgb(28, 81, 128)GTp鹰城网
            End GetGTp鹰城网
        End PropertyGTp鹰城网

        Public Shared ReadOnly Property DisabledButtonBorderColor() As ColorGTp鹰城网
            GetGTp鹰城网
                Return Color.FromArgb(202, 200, 187)GTp鹰城网
            End GetGTp鹰城网
        End PropertyGTp鹰城网

        Public Shared ReadOnly Property DisabledBackColor() As ColorGTp鹰城网
            GetGTp鹰城网
                Return Color.FromArgb(236, 233, 216)GTp鹰城网
            End GetGTp鹰城网
        End PropertyGTp鹰城网

        Public Shared ReadOnly Property DisabledForeColor() As ColorGTp鹰城网
            GetGTp鹰城网
                Return Color.FromArgb(161, 161, 146)GTp鹰城网
            End GetGTp鹰城网
        End PropertyGTp鹰城网

GTp鹰城网
        Public Shared Function GetStringFormat(ByVal contentAlignment As ContentAlignment) As StringFormatGTp鹰城网
            If Not System.Enum.IsDefined(GetType(ContentAlignment), CType(contentAlignment, Integer)) ThenGTp鹰城网
                Throw New System.ComponentModel.InvalidEnumArgumentException("contentAlignment", CType(contentAlignment, Integer), GetType(ContentAlignment))GTp鹰城网
            End IfGTp鹰城网
            Dim stringFormat As StringFormat = New StringFormatGTp鹰城网
            Select Case contentAlignmentGTp鹰城网
                Case contentAlignment.MiddleCenterGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.CenterGTp鹰城网
                    stringFormat.Alignment = StringAlignment.CenterGTp鹰城网
                    '''' break GTp鹰城网
                Case contentAlignment.MiddleLeftGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.CenterGTp鹰城网
                    stringFormat.Alignment = StringAlignment.NearGTp鹰城网
                    '''' break GTp鹰城网
                Case contentAlignment.MiddleRightGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.CenterGTp鹰城网
                    stringFormat.Alignment = StringAlignment.FarGTp鹰城网
                    '''' break GTp鹰城网
                Case contentAlignment.TopCenterGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.NearGTp鹰城网
                    stringFormat.Alignment = StringAlignment.CenterGTp鹰城网
                    '''' break GTp鹰城网
                Case contentAlignment.TopLeftGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.NearGTp鹰城网
                    stringFormat.Alignment = StringAlignment.NearGTp鹰城网
                    '''' break GTp鹰城网
                Case contentAlignment.TopRightGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.NearGTp鹰城网
                    stringFormat.Alignment = StringAlignment.FarGTp鹰城网
                    '''' break GTp鹰城网
                Case contentAlignment.BottomCenterGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.FarGTp鹰城网
                    stringFormat.Alignment = StringAlignment.CenterGTp鹰城网
                    '''' break GTp鹰城网
                Case contentAlignment.BottomLeftGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.FarGTp鹰城网
                    stringFormat.Alignment = StringAlignment.NearGTp鹰城网
                    '''' break GTp鹰城网
                Case contentAlignment.BottomRightGTp鹰城网
                    stringFormat.LineAlignment = StringAlignment.FarGTp鹰城网
                    stringFormat.Alignment = StringAlignment.FarGTp鹰城网
                    '''' break GTp鹰城网
            End SelectGTp鹰城网
            Return stringFormatGTp鹰城网
        End FunctionGTp鹰城网

        Public Shared Sub DrawRoundedRectangle(ByVal g As Graphics, ByVal p As Pen, ByVal rc As Rectangle, ByVal size As Size)GTp鹰城网
            Dim oldSmoothingMode As SmoothingMode = g.SmoothingModeGTp鹰城网
            g.SmoothingMode = SmoothingMode.AntiAliasGTp鹰城网
            g.DrawLine(p, CType(rc.Left + size.Width / 2, Single), rc.Top, CType(rc.Right - size.Width / 2, Single), rc.Top)GTp鹰城网
            g.DrawArc(p, rc.Right - size.Width, rc.Top, size.Width, size.Height, 270, 90)GTp鹰城网
            g.DrawLine(p, rc.Right, CType(rc.Top + size.Height / 2, Single), rc.Right, CType(rc.Bottom - size.Height / 2, Single))GTp鹰城网
            g.DrawArc(p, rc.Right - size.Width, rc.Bottom - size.Height, size.Width, size.Height, 0, 90)GTp鹰城网
            g.DrawLine(p, CType(rc.Right - size.Width / 2, Single), rc.Bottom, CType(rc.Left + size.Width / 2, Single), rc.Bottom)GTp鹰城网
            g.DrawArc(p, rc.Left, rc.Bottom - size.Height, size.Width, size.Height, 90, 90)GTp鹰城网
            g.DrawLine(p, rc.Left, CType(rc.Bottom - size.Height / 2, Single), rc.Left, CType(rc.Top + size.Height / 2, Single))GTp鹰城网
            g.DrawArc(p, rc.Left, rc.Top, size.Width, size.Height, 180, 90)GTp鹰城网
            g.SmoothingMode = oldSmoothingModeGTp鹰城网
        End SubGTp鹰城网

        Public Shared Sub DrawBorder(ByVal g As Graphics, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)GTp鹰城网
            g.DrawRectangle(New Pen(ControlPaint.BorderColor, 0), x, y, width, height)GTp鹰城网
        End SubGTp鹰城网

        Public Shared Sub EraseExcessOldDropDown(ByVal g As Graphics, ByVal newButton As Rectangle)GTp鹰城网
            g.FillRectangle(New SolidBrush(SystemColors.Window), newButton.X - 2, newButton.Y, 2, newButton.Height + 1)GTp鹰城网
        End SubGTp鹰城网
    End ClassGTp鹰城网

    Public Class XP_ButtonGTp鹰城网
        Inherits System.Windows.Forms.ButtonGTp鹰城网

        Public Enum ControlStateGTp鹰城网
            NormalGTp鹰城网
            HoverGTp鹰城网
            PressedGTp鹰城网
            Default1GTp鹰城网
            DisabledGTp鹰城网
        End EnumGTp鹰城网

        Private components As System.ComponentModel.ContainerGTp鹰城网

        Public Sub New()GTp鹰城网
            MyBase.New()GTp鹰城网

            InitializeComponent()GTp鹰城网

            Me.SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.DoubleBuffer, True)GTp鹰城网

        End SubGTp鹰城网

        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)GTp鹰城网
            If disposing ThenGTp鹰城网
                If Not (components Is Nothing) ThenGTp鹰城网
                    components.Dispose()GTp鹰城网
                End IfGTp鹰城网
            End IfGTp鹰城网
            MyBase.Dispose(disposing)GTp鹰城网
        End SubGTp鹰城网

        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()GTp鹰城网
            ''''GTp鹰城网
            ''''XPButtonGTp鹰城网
            ''''GTp鹰城网
            Me.Name = "XPButton"GTp鹰城网

        End SubGTp鹰城网

GTp鹰城网
#Region "Static members"GTp鹰城网

        Private Shared ReadOnly sizeBorderPixelIndent As Size = New Size(4, 4)GTp鹰城网
        Dim clrOuterShadow1 As Color = Color.FromArgb(64, 164, 164, 164)GTp鹰城网
        Dim clrOuterShadow2 As Color = Color.FromArgb(64, Color.White)GTp鹰城网
        Dim clrBackground1 As Color = Color.FromArgb(250, 250, 248)GTp鹰城网
        Dim clrBackground2 As Color = Color.FromArgb(240, 240, 234)GTp鹰城网
        Dim clrBorder As Color = Color.FromArgb(0, 60, 116)GTp鹰城网
        Dim clrInnerShadowBottom1 As Color = Color.FromArgb(236, 235, 230)GTp鹰城网
        Dim clrInnerShadowBottom2 As Color = Color.FromArgb(226, 223, 214)GTp鹰城网
        Dim clrInnerShadowBottom3 As Color = Color.FromArgb(214, 208, 197)GTp鹰城网
        Dim clrInnerShadowRight1a As Color = Color.FromArgb(128, 236, 234, 230)GTp鹰城网
        Dim clrInnerShadowRight1b As Color = Color.FromArgb(128, 224, 220, 212)GTp鹰城网
        Dim clrInnerShadowRight2a As Color = Color.FromArgb(128, 234, 228, 218)GTp鹰城网
        Dim clrInnerShadowRight2b As Color = Color.FromArgb(128, 212, 208, 196)GTp鹰城网
        Dim clrInnerShadowBottomPressed1 As Color = Color.FromArgb(234, 233, 227)GTp鹰城网
        Dim clrInnerShadowBottomPressed2 As Color = Color.FromArgb(242, 241, 238)GTp鹰城网
        Dim clrInnerShadowTopPressed1 As Color = Color.FromArgb(209, 204, 193)GTp鹰城网
        Dim clrInnerShadowTopPressed2 As Color = Color.FromArgb(220, 216, 207)GTp鹰城网
        Dim clrInnerShadowLeftPressed1 As Color = Color.FromArgb(216, 213, 203)GTp鹰城网
        Dim clrInnerShadowLeftPressed2 As Color = Color.FromArgb(222, 220, 211)GTp鹰城网

#End RegionGTp鹰城网

#Region "Constructors"GTp鹰城网
        ''''Shared EDButton()GTp鹰城网
        ''''sizeBorderPixelIndent = New Size(4, 4)GTp鹰城网
        ''''clrOuterShadow1 = Color.FromArgb(64, 164, 164, 164)GTp鹰城网
        ''''clrOuterShadow2 = Color.FromArgb(64, Color.White)GTp鹰城网
        ''''clrBackground1 = Color.FromArgb(250, 250, 248)GTp鹰城网
        ''''clrBackground2 = Color.FromArgb(240, 240, 234)GTp鹰城网
        ''''clrBorder = Color.FromArgb(0, 60, 116)GTp鹰城网
        '''' clrInnerShadowBottom1 = Color.FromArgb(236, 235, 230)GTp鹰城网
        ''''clrInnerShadowBottom2 = Color.FromArgb(226, 223, 214)GTp鹰城网
        ''''clrInnerShadowBottom3 = Color.FromArgb(214, 208, 197)GTp鹰城网
        ''''clrInnerShadowRight1a = Color.FromArgb(128, 236, 234, 230)GTp鹰城网
        ''''clrInnerShadowRight1b = Color.FromArgb(128, 224, 220, 212)GTp鹰城网
        ''''clrInnerShadowRight2a = Color.FromArgb(128, 234, 228, 218)GTp鹰城网
        '''' clrInnerShadowRight2b = Color.FromArgb(128, 212, 208, 196)GTp鹰城网
        '''' clrInnerShadowBottomPressed1 = Color.FromArgb(234, 233, 227)GTp鹰城网
        ''''clrInnerShadowBottomPressed2 = Color.FromArgb(242, 241, 238)GTp鹰城网
        ''''clrInnerShadowTopPressed1 = Color.FromArgb(209, 204, 193)GTp鹰城网
        ''''clrInnerShadowTopPressed2 = Color.FromArgb(220, 216, 207)GTp鹰城网
        ''''  clrInnerShadowLeftPressed1 = Color.FromArgb(216, 213, 203)GTp鹰城网
        ''''clrInnerShadowLeftPressed2 = Color.FromArgb(222, 220, 211)GTp鹰城网
        ''''End SubGTp鹰城网
#End RegionGTp鹰城网

#Region "Properties"GTp鹰城网
        Dim enmState As ControlState = ControlState.NormalGTp鹰城网
        Dim bCanClick As Boolean = FalseGTp鹰城网
        Dim m_btnStyle As emunType.XPStyle = emunType.XPStyle.Default1GTp鹰城网
        Dim m_btnShape As emunType.BtnShape = emunType.BtnShape.RectangleGTp鹰城网
        Dim locPoint As PointGTp鹰城网

        Public Shadows Property FlatStyle() As FlatStyleGTp鹰城网
            GetGTp鹰城网
                Return MyBase.FlatStyleGTp鹰城网
            End GetGTp鹰城网
            Set(ByVal Value As FlatStyle)GTp鹰城网
                MyBase.FlatStyle = FlatStyle.StandardGTp鹰城网
            End SetGTp鹰城网
        End PropertyGTp鹰城网

        Public Property BtnShape() As emunType.BtnShapeGTp鹰城网
            GetGTp鹰城网
                Return m_btnShapeGTp鹰城网
            End GetGTp鹰城网
            Set(ByVal Value As emunType.BtnShape)GTp鹰城网
                m_btnShape = ValueGTp鹰城网
                MyBase.Invalidate()GTp鹰城网
            End SetGTp鹰城网
        End PropertyGTp鹰城网

        <DefaultValue("Blue"), System.ComponentModel.RefreshProperties(RefreshProperties.Repaint)> _GTp鹰城网
        Public Property BtnStyle() As emunType.XPStyleGTp鹰城网
            GetGTp鹰城网
                Return m_btnStyleGTp鹰城网
            End GetGTp鹰城网
            Set(ByVal Value As emunType.XPStyle)GTp鹰城网
                m_btnStyle = ValueGTp鹰城网
                Me.Invalidate()GTp鹰城网
            End SetGTp鹰城网
        End PropertyGTp鹰城网

        Public Property AdjustImageLocation() As PointGTp鹰城网
            GetGTp鹰城网
                Return locPointGTp鹰城网
            End GetGTp鹰城网
            Set(ByVal Value As Point)GTp鹰城网
                locPoint = ValueGTp鹰城网
                Me.Invalidate()GTp鹰城网
            End SetGTp鹰城网
        End PropertyGTp鹰城网

        Private ReadOnly Property BorderRectangle() As RectangleGTp鹰城网
            GetGTp鹰城网
                Dim rc As Rectangle = Me.ClientRectangleGTp鹰城网
                Return New Rectangle(1, 1, rc.Width - 3, rc.Height - 3)GTp鹰城网
            End GetGTp鹰城网
        End PropertyGTp鹰城网

#End RegionGTp鹰城网

#Region "Methods"GTp鹰城网

        Protected Overloads Overrides Sub OnClick(ByVal ea As EventArgs)GTp鹰城网
            Me.Capture = FalseGTp鹰城网
            bCanClick = FalseGTp鹰城网
            If Me.ClientRectangle.Contains(Me.PointToClient(Control.MousePosition)) ThenGTp鹰城网
                enmState = ControlState.HoverGTp鹰城网
            ElseGTp鹰城网
                enmState = ControlState.NormalGTp鹰城网
            End IfGTp鹰城网
            Me.Invalidate()GTp鹰城网
            MyBase.OnClick(ea)GTp鹰城网
        End SubGTp鹰城网

        Protected Overloads Overrides Sub OnMouseEnter(ByVal ea As EventArgs)GTp鹰城网
            MyBase.OnMouseEnter(ea)GTp鹰城网
            enmState = ControlState.HoverGTp鹰城网
            Me.Invalidate()GTp鹰城网
        End SubGTp鹰城网

        Protected Overloads Overrides Sub OnMouseDown(ByVal mea As MouseEventArgs)GTp鹰城网
            MyBase.OnMouseDown(mea)GTp鹰城网
            If mea.Button = MouseButtons.Left ThenGTp鹰城网
                bCanClick = TrueGTp鹰城网
                enmState = ControlState.PressedGTp鹰城网
                Me.Invalidate()GTp鹰城网
            End IfGTp鹰城网
        End SubGTp鹰城网

        Protected Overloads Overrides Sub OnMouseMove(ByVal mea As MouseEventArgs)GTp鹰城网
            MyBase.OnMouseMove(mea)GTp鹰城网
            If ClientRectangle.Contains(mea.X, mea.Y) ThenGTp鹰城网
                If enmState = ControlState.Hover AndAlso Me.Capture AndAlso Not bCanClick ThenGTp鹰城网
                    bCanClick = TrueGTp鹰城网
                    enmState = ControlState.PressedGTp鹰城网
                    Me.Invalidate()GTp鹰城网
                End IfGTp鹰城网
            ElseGTp鹰城网
                If enmState = ControlState.Pressed ThenGTp鹰城网
                    bCanClick = FalseGTp鹰城网
                    enmState = ControlState.HoverGTp鹰城网
                    Me.Invalidate()GTp鹰城网
                End IfGTp鹰城网
            End IfGTp鹰城网
        End SubGTp鹰城网

        Protected Overloads Overrides Sub OnMouseLeave(ByVal ea As EventArgs)GTp鹰城网
            MyBase.OnMouseLeave(ea)GTp鹰城网
            enmState = ControlState.NormalGTp鹰城网
            Me.Invalidate()GTp鹰城网
        End SubGTp鹰城网

        Protected Overloads Overrides Sub OnPaint(ByVal pea As PaintEventArgs)GTp鹰城网
            Me.OnPaintBackground(pea)GTp鹰城网
            Select Case enmStateGTp鹰城网
                Case ControlState.NormalGTp鹰城网
                    If Me.Enabled ThenGTp鹰城网
                        If Me.Focused OrElse Me.IsDefault ThenGTp鹰城网
                            Select Case m_btnShapeGTp鹰城网
                                Case emunType.BtnShape.RectangleGTp鹰城网
                                    OnDrawDefault(pea.Graphics)GTp鹰城网
                                    '''' break GTp鹰城网
                                Case emunType.BtnShape.EllipseGTp鹰城网
                                    OnDrawDefaultEllipse(pea.Graphics)GTp鹰城网
                                    '''' break GTp鹰城网
                            End SelectGTp鹰城网
                        ElseGTp鹰城网
                            Select Case m_btnShapeGTp鹰城网
                                Case emunType.BtnShape.RectangleGTp鹰城网
                                    OnDrawNormal(pea.Graphics)GTp鹰城网
                                    '''' break GTp鹰城网
                                Case emunType.BtnShape.EllipseGTp鹰城网
                                    OnDrawNormalEllipse(pea.Graphics)GTp鹰城网
                                    '''' break GTp鹰城网
                            End SelectGTp鹰城网
                        End IfGTp鹰城网
                    ElseGTp鹰城网
                        OnDrawDisabled(pea.Graphics)GTp鹰城网
                    End IfGTp鹰城网
                    '''' break GTp鹰城网
                Case ControlState.HoverGTp鹰城网
                    Select Case m_btnShapeGTp鹰城网
                        Case emunType.BtnShape.RectangleGTp鹰城网
                            OnDrawHover(pea.Graphics)GTp鹰城网
                            '''' break GTp鹰城网
                        Case emunType.BtnShape.EllipseGTp鹰城网
                            OnDrawHoverEllipse(pea.Graphics)GTp鹰城网
                            '''' break GTp鹰城网
                    End SelectGTp鹰城网
                    '''' break GTp鹰城网
                Case ControlState.PressedGTp鹰城网
                    Select Case m_btnShapeGTp鹰城网
                        Case emunType.BtnShape.RectangleGTp鹰城网
                            OnDrawPressed(pea.Graphics)GTp鹰城网
                            '''' break GTp鹰城网
                        Case emunType.BtnShape.EllipseGTp鹰城网
                            OnDrawPressedEllipse(pea.Graphics)GTp鹰城网
                            '''' break GTp鹰城网
                    End SelectGTp鹰城网
                    '''' break GTp鹰城网
            End SelectGTp鹰城网
            OnDrawTextAndImage(pea.Graphics)GTp鹰城网
        End SubGTp鹰城网

        Protected Overloads Overrides Sub OnEnabledChanged(ByVal ea As EventArgs)GTp鹰城网
            MyBase.OnEnabledChanged(ea)GTp鹰城网
            enmState = ControlState.NormalGTp鹰城网
            Me.Invalidate()GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawNormal(ByVal g As Graphics)GTp鹰城网
            DrawNormalButton(g)GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawHoverEllipse(ByVal g As Graphics)GTp鹰城网
            DrawNormalEllipse(g)GTp鹰城网
            DrawEllipseHoverBorder(g)GTp鹰城网
            DrawEllipseBorder(g)GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawHover(ByVal g As Graphics)GTp鹰城网
            DrawNormalButton(g)GTp鹰城网
            Dim rcBorder As Rectangle = Me.BorderRectangleGTp鹰城网
            Dim penTop1 As Pen = New Pen(Color.FromArgb(255, 240, 207))GTp鹰城网
            Dim penTop2 As Pen = New Pen(Color.FromArgb(253, 216, 137))GTp鹰城网
            g.DrawLine(penTop1, rcBorder.Left + 2, rcBorder.Top + 1, rcBorder.Right - 2, rcBorder.Top + 1)GTp鹰城网
            g.DrawLine(penTop2, rcBorder.Left + 1, rcBorder.Top + 2, rcBorder.Right - 1, rcBorder.Top + 2)GTp鹰城网
            penTop1.Dispose()GTp鹰城网
            penTop2.Dispose()GTp鹰城网
            Dim penBottom1 As Pen = New Pen(Color.FromArgb(248, 178, 48))GTp鹰城网
            Dim penBottom2 As Pen = New Pen(Color.FromArgb(229, 151, 0))GTp鹰城网
            g.DrawLine(penBottom1, rcBorder.Left + 1, rcBorder.Bottom - 2, rcBorder.Right - 1, rcBorder.Bottom - 2)GTp鹰城网
            g.DrawLine(penBottom2, rcBorder.Left + 2, rcBorder.Bottom - 1, rcBorder.Right - 2, rcBorder.Bottom - 1)GTp鹰城网
            penBottom1.Dispose()GTp鹰城网
            penBottom2.Dispose()GTp鹰城网
            Dim rcLeft As Rectangle = New Rectangle(rcBorder.Left + 1, rcBorder.Top + 3, 2, rcBorder.Height - 5)GTp鹰城网
            Dim rcRight As Rectangle = New Rectangle(rcBorder.Right - 2, rcBorder.Top + 3, 2, rcBorder.Height - 5)GTp鹰城网
            Dim brushSide As LinearGradientBrush = New LinearGradientBrush(rcLeft, Color.FromArgb(254, 221, 149), Color.FromArgb(249, 180, 53), LinearGradientMode.Vertical)GTp鹰城网
            g.FillRectangle(brushSide, rcLeft)GTp鹰城网
            g.FillRectangle(brushSide, rcRight)GTp鹰城网
            brushSide.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawPressedEllipse(ByVal g As Graphics)GTp鹰城网
            DrawPressedEllipse(g)GTp鹰城网
            DrawEllipseBorder(g)GTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawPressedEllipse(ByVal g As Graphics)GTp鹰城网
            Dim rcBorder As Rectangle = Me.BorderRectangleGTp鹰城网
            Dim rcBackground As Rectangle = New Rectangle(rcBorder.X + 1, rcBorder.Y + 1, rcBorder.Width - 1, rcBorder.Height - 1)GTp鹰城网
            Dim brushBackground As SolidBrush = New SolidBrush(Color.FromArgb(226, 225, 218))GTp鹰城网
            g.FillEllipse(brushBackground, rcBackground)GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawPressed(ByVal g As Graphics)GTp鹰城网
            Dim rcBorder As Rectangle = Me.BorderRectangleGTp鹰城网
            DrawOuterShadow(g)GTp鹰城网
            Dim rcBackground As Rectangle = New Rectangle(rcBorder.X + 1, rcBorder.Y + 1, rcBorder.Width - 1, rcBorder.Height - 1)GTp鹰城网
            Dim brushBackground As SolidBrush = New SolidBrush(Color.FromArgb(226, 225, 218))GTp鹰城网
            g.FillRectangle(brushBackground, rcBackground)GTp鹰城网
            brushBackground.Dispose()GTp鹰城网
            DrawBorder(g)GTp鹰城网
            Dim penInnerShadowBottomPressed1 As Pen = New Pen(clrInnerShadowBottomPressed1)GTp鹰城网
            Dim penInnerShadowBottomPressed2 As Pen = New Pen(clrInnerShadowBottomPressed2)GTp鹰城网
            g.DrawLine(penInnerShadowBottomPressed1, rcBorder.Left + 1, rcBorder.Bottom - 2, rcBorder.Right - 1, rcBorder.Bottom - 2)GTp鹰城网
            g.DrawLine(penInnerShadowBottomPressed2, rcBorder.Left + 2, rcBorder.Bottom - 1, rcBorder.Right - 2, rcBorder.Bottom - 1)GTp鹰城网
            penInnerShadowBottomPressed1.Dispose()GTp鹰城网
            penInnerShadowBottomPressed2.Dispose()GTp鹰城网
            Dim penInnerShadowTopPressed1 As Pen = New Pen(clrInnerShadowTopPressed1)GTp鹰城网
            Dim penInnerShadowTopPressed2 As Pen = New Pen(clrInnerShadowTopPressed2)GTp鹰城网
            g.DrawLine(penInnerShadowTopPressed1, rcBorder.Left + 2, rcBorder.Top + 1, rcBorder.Right - 2, rcBorder.Top + 1)GTp鹰城网
            g.DrawLine(penInnerShadowTopPressed2, rcBorder.Left + 1, rcBorder.Top + 2, rcBorder.Right - 1, rcBorder.Top + 2)GTp鹰城网
            penInnerShadowTopPressed1.Dispose()GTp鹰城网
            penInnerShadowTopPressed2.Dispose()GTp鹰城网
            Dim penInnerShadowLeftPressed1 As Pen = New Pen(clrInnerShadowLeftPressed1)GTp鹰城网
            Dim penInnerShadowLeftPressed2 As Pen = New Pen(clrInnerShadowLeftPressed2)GTp鹰城网
            g.DrawLine(penInnerShadowLeftPressed1, rcBorder.Left + 1, rcBorder.Top + 3, rcBorder.Left + 1, rcBorder.Bottom - 3)GTp鹰城网
            g.DrawLine(penInnerShadowLeftPressed2, rcBorder.Left + 2, rcBorder.Top + 3, rcBorder.Left + 2, rcBorder.Bottom - 3)GTp鹰城网
            penInnerShadowLeftPressed1.Dispose()GTp鹰城网
            penInnerShadowLeftPressed2.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawNormalEllipse(ByVal g As Graphics)GTp鹰城网
            DrawNormalEllipse(g)GTp鹰城网
            DrawEllipseBorder(g)GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawDefaultEllipse(ByVal g As Graphics)GTp鹰城网
            DrawNormalEllipse(g)GTp鹰城网
            DrawEllipseDefaultBorder(g)GTp鹰城网
            DrawEllipseBorder(g)GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawDefault(ByVal g As Graphics)GTp鹰城网
            DrawNormalButton(g)GTp鹰城网
            Dim rcBorder As Rectangle = Me.BorderRectangleGTp鹰城网
            Dim penTop1 As Pen = New Pen(Color.FromArgb(206, 231, 255))GTp鹰城网
            Dim penTop2 As Pen = New Pen(Color.FromArgb(188, 212, 246))GTp鹰城网
            g.DrawLine(penTop1, rcBorder.Left + 2, rcBorder.Top + 1, rcBorder.Right - 2, rcBorder.Top + 1)GTp鹰城网
            g.DrawLine(penTop2, rcBorder.Left + 1, rcBorder.Top + 2, rcBorder.Right - 1, rcBorder.Top + 2)GTp鹰城网
            penTop1.Dispose()GTp鹰城网
            penTop2.Dispose()GTp鹰城网
            Dim penBottom1 As Pen = New Pen(Color.FromArgb(137, 173, 228))GTp鹰城网
            Dim penBottom2 As Pen = New Pen(Color.FromArgb(105, 130, 238))GTp鹰城网
            g.DrawLine(penBottom1, rcBorder.Left + 1, rcBorder.Bottom - 2, rcBorder.Right - 1, rcBorder.Bottom - 2)GTp鹰城网
            g.DrawLine(penBottom2, rcBorder.Left + 2, rcBorder.Bottom - 1, rcBorder.Right - 2, rcBorder.Bottom - 1)GTp鹰城网
            penBottom1.Dispose()GTp鹰城网
            penBottom2.Dispose()GTp鹰城网
            Dim rcLeft As Rectangle = New Rectangle(rcBorder.Left + 1, rcBorder.Top + 3, 2, rcBorder.Height - 5)GTp鹰城网
            Dim rcRight As Rectangle = New Rectangle(rcBorder.Right - 2, rcBorder.Top + 3, 2, rcBorder.Height - 5)GTp鹰城网
            Dim brushSide As LinearGradientBrush = New LinearGradientBrush(rcLeft, Color.FromArgb(186, 211, 245), Color.FromArgb(137, 173, 228), LinearGradientMode.Vertical)GTp鹰城网
            g.FillRectangle(brushSide, rcLeft)GTp鹰城网
            g.FillRectangle(brushSide, rcRight)GTp鹰城网
            brushSide.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawDisabled(ByVal g As Graphics)GTp鹰城网
            Dim rcBorder As Rectangle = Me.BorderRectangleGTp鹰城网
            Dim rcBackground As Rectangle = New Rectangle(rcBorder.X + 1, rcBorder.Y + 1, rcBorder.Width - 1, rcBorder.Height - 1)GTp鹰城网
            Dim brushBackground As SolidBrush = New SolidBrush(Color.FromArgb(245, 244, 234))GTp鹰城网
            g.FillRectangle(brushBackground, rcBackground)GTp鹰城网
            brushBackground.Dispose()GTp鹰城网
            Dim penBorder As Pen = New Pen(Color.FromArgb(201, 199, 186))GTp鹰城网
            ControlPaint.DrawRoundedRectangle(g, penBorder, rcBorder, sizeBorderPixelIndent)GTp鹰城网
            penBorder.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub OnDrawTextAndImage(ByVal g As Graphics)GTp鹰城网
            Dim brushText As SolidBrushGTp鹰城网
            If Enabled ThenGTp鹰城网
                brushText = New SolidBrush(ForeColor)GTp鹰城网
            ElseGTp鹰城网
                brushText = New SolidBrush(ControlPaint.DisabledForeColor)GTp鹰城网
            End IfGTp鹰城网
            Dim sf As StringFormat = ControlPaint.GetStringFormat(Me.TextAlign)GTp鹰城网
            sf.HotkeyPrefix = System.Drawing.Text.HotkeyPrefix.ShowGTp鹰城网
            If Not (Me.Image Is Nothing) ThenGTp鹰城网
                Dim rc As Rectangle = New RectangleGTp鹰城网
                Dim ImagePoint As Point = New Point(6, 4)GTp鹰城网
                Select Case Me.ImageAlignGTp鹰城网
                    Case ContentAlignment.MiddleRightGTp鹰城网
                        rc.Width = Me.ClientRectangle.Width - Me.Image.Width - 8GTp鹰城网
                        rc.Height = Me.ClientRectangle.HeightGTp鹰城网
                        rc.X = 0GTp鹰城网
                        rc.Y = 0GTp鹰城网
                        ImagePoint.X = rc.WidthGTp鹰城网
                        ImagePoint.Y = Me.ClientRectangle.Height / 2 - Image.Height / 2GTp鹰城网
                        '''' break GTp鹰城网
                    Case ContentAlignment.TopCenterGTp鹰城网
                        ImagePoint.Y = 2GTp鹰城网
                        ImagePoint.X = (Me.ClientRectangle.Width - Me.Image.Width) / 2GTp鹰城网
                        rc.Width = Me.ClientRectangle.WidthGTp鹰城网
                        rc.Height = Me.ClientRectangle.Height - Me.Image.Height - 4GTp鹰城网
                        rc.X = Me.ClientRectangle.XGTp鹰城网
                        rc.Y = Me.Image.HeightGTp鹰城网
                        '''' break GTp鹰城网
                    Case ContentAlignment.MiddleCenterGTp鹰城网
                        ImagePoint.X = (Me.ClientRectangle.Width - Me.Image.Width) / 2GTp鹰城网
                        ImagePoint.Y = (Me.ClientRectangle.Height - Me.Image.Height) / 2GTp鹰城网
                        rc.Width = 0GTp鹰城网
                        rc.Height = 0GTp鹰城网
                        rc.X = Me.ClientRectangle.WidthGTp鹰城网
                        rc.Y = Me.ClientRectangle.HeightGTp鹰城网
                        '''' break GTp鹰城网
                    Case ElseGTp鹰城网
                        ImagePoint.X = 6GTp鹰城网
                        ImagePoint.Y = Me.ClientRectangle.Height / 2 - Image.Height / 2GTp鹰城网
                        rc.Width = Me.ClientRectangle.Width - Me.Image.WidthGTp鹰城网
                        rc.Height = Me.ClientRectangle.HeightGTp鹰城网
                        rc.X = Me.Image.WidthGTp鹰城网
                        rc.Y = 0GTp鹰城网
                        '''' break GTp鹰城网
                End SelectGTp鹰城网
                ImagePoint.X += locPoint.XGTp鹰城网
                ImagePoint.Y += locPoint.YGTp鹰城网
                If Me.Enabled ThenGTp鹰城网
                    g.DrawImage(Me.Image, ImagePoint)GTp鹰城网
                ElseGTp鹰城网
                    System.Windows.Forms.ControlPaint.DrawImageDisabled(g, Me.Image, locPoint.X, locPoint.Y, Me.BackColor)GTp鹰城网
                End IfGTp鹰城网
                If Not (ContentAlignment.MiddleCenter = Me.ImageAlign) ThenGTp鹰城网
                    Dim rs As RectangleFGTp鹰城网
                    rs.X = rc.XGTp鹰城网
                    rs.Y = rc.YGTp鹰城网
                    rs.Width = rc.WidthGTp鹰城网
                    rs.Height = rc.HeightGTp鹰城网
                    g.DrawString(Me.Text, Me.Font, brushText, rs, sf)GTp鹰城网
                End IfGTp鹰城网
            ElseGTp鹰城网
                Dim rs As RectangleFGTp鹰城网
                rs.X = Me.ClientRectangle.XGTp鹰城网
                rs.Y = Me.ClientRectangle.YGTp鹰城网
                rs.Width = Me.ClientRectangle.WidthGTp鹰城网
                rs.Height = Me.ClientRectangle.HeightGTp鹰城网
                g.DrawString(Me.Text, Me.Font, brushText, rs, sf)GTp鹰城网
            End IfGTp鹰城网
            brushText.Dispose()GTp鹰城网
            sf.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawNormalEllipse(ByVal g As Graphics)GTp鹰城网
            Dim rcBackground As Rectangle = Me.BorderRectangleGTp鹰城网
            Dim brushBackground As LinearGradientBrush = NothingGTp鹰城网
            Select Case m_btnStyleGTp鹰城网
                Case emunType.XPStyle.Default1GTp鹰城网
                    brushBackground = New LinearGradientBrush(rcBackground, clrBackground1, clrBackground2, LinearGradientMode.Vertical)GTp鹰城网
                    '''' break GTp鹰城网
                Case emunType.XPStyle.BlueGTp鹰城网
                    brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(248, 252, 253), Color.FromArgb(172, 171, 201), LinearGradientMode.Vertical)GTp鹰城网
                    '''' break GTp鹰城网
                Case emunType.XPStyle.OliveGreenGTp鹰城网
                    brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(250, 250, 240), Color.FromArgb(235, 220, 190), LinearGradientMode.Vertical)GTp鹰城网
                    '''' break GTp鹰城网
                Case emunType.XPStyle.SilverGTp鹰城网
                    brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(253, 253, 253), Color.FromArgb(205, 205, 205), LinearGradientMode.Vertical)GTp鹰城网
                    '''' break GTp鹰城网
            End SelectGTp鹰城网
            Dim relativeIntensities() As Single = {0, 0.008, 1}GTp鹰城网
            Dim relativePositions() As Single = {0, 0.22, 1}GTp鹰城网
            Dim blend As Blend = New BlendGTp鹰城网
            blend.Factors = relativeIntensitiesGTp鹰城网
            blend.Positions = relativePositionsGTp鹰城网
            brushBackground.Blend = blendGTp鹰城网
            g.FillEllipse(brushBackground, rcBackground)GTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawNormalButton(ByVal g As Graphics)GTp鹰城网
            Dim rcBorder As Rectangle = Me.BorderRectangleGTp鹰城网
            DrawOuterShadow(g)GTp鹰城网
            Dim rcBackground As Rectangle = New Rectangle(rcBorder.X + 1, rcBorder.Y + 1, rcBorder.Width - 1, rcBorder.Height - 1)GTp鹰城网
            Dim brushBackground As LinearGradientBrush = NothingGTp鹰城网
            Select Case m_btnStyleGTp鹰城网
                Case emunType.XPStyle.Default1GTp鹰城网
                    brushBackground = New LinearGradientBrush(rcBackground, clrBackground1, clrBackground2, LinearGradientMode.Vertical)GTp鹰城网
                    '''' break GTp鹰城网
                Case emunType.XPStyle.BlueGTp鹰城网
                    brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(248, 252, 253), Color.FromArgb(172, 171, 201), LinearGradientMode.Vertical)GTp鹰城网
                    '''' break GTp鹰城网
                Case emunType.XPStyle.OliveGreenGTp鹰城网
                    brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(250, 250, 240), Color.FromArgb(235, 220, 190), LinearGradientMode.Vertical)GTp鹰城网
                    '''' break GTp鹰城网
                Case emunType.XPStyle.SilverGTp鹰城网
                    brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(253, 253, 253), Color.FromArgb(205, 205, 205), LinearGradientMode.Vertical)GTp鹰城网
                    '''' break GTp鹰城网
            End SelectGTp鹰城网
            Dim relativeIntensities() As Single = {0, 0.08, 1}GTp鹰城网
            Dim relativePositions() As Single = {0, 0.32, 1}GTp鹰城网
            Dim blend As Blend = New BlendGTp鹰城网
            blend.Factors = relativeIntensitiesGTp鹰城网
            blend.Positions = relativePositionsGTp鹰城网
            brushBackground.Blend = blendGTp鹰城网
            g.FillRectangle(brushBackground, rcBackground)GTp鹰城网
            brushBackground.Dispose()GTp鹰城网
            DrawBorder(g)GTp鹰城网
            If emunType.XPStyle.Default1 = m_btnStyle ThenGTp鹰城网
                Dim penInnerShadowBottom1 As Pen = New Pen(clrInnerShadowBottom1)GTp鹰城网
                Dim penInnerShadowBottom2 As Pen = New Pen(clrInnerShadowBottom2)GTp鹰城网
                Dim penInnerShadowBottom3 As Pen = New Pen(clrInnerShadowBottom3)GTp鹰城网
                g.DrawLine(penInnerShadowBottom1, rcBorder.Left + 1, rcBorder.Bottom - 3, rcBorder.Right - 1, rcBorder.Bottom - 3)GTp鹰城网
                g.DrawLine(penInnerShadowBottom2, rcBorder.Left + 1, rcBorder.Bottom - 2, rcBorder.Right - 1, rcBorder.Bottom - 2)GTp鹰城网
                g.DrawLine(penInnerShadowBottom3, rcBorder.Left + 2, rcBorder.Bottom - 1, rcBorder.Right - 2, rcBorder.Bottom - 1)GTp鹰城网
                penInnerShadowBottom1.Dispose()GTp鹰城网
                penInnerShadowBottom2.Dispose()GTp鹰城网
                penInnerShadowBottom3.Dispose()GTp鹰城网
                Dim ptInnerShadowRight1a As Point = New Point(rcBorder.Right - 2, rcBorder.Top + 1)GTp鹰城网
                Dim ptInnerShadowRight1b As Point = New Point(rcBorder.Right - 2, rcBorder.Bottom - 1)GTp鹰城网
                Dim ptInnerShadowRight2a As Point = New Point(rcBorder.Right - 1, rcBorder.Top + 2)GTp鹰城网
                Dim ptInnerShadowRight2b As Point = New Point(rcBorder.Right - 1, rcBorder.Bottom - 2)GTp鹰城网
                Dim brushInnerShadowRight1 As LinearGradientBrush = New LinearGradientBrush(ptInnerShadowRight1a, ptInnerShadowRight1b, clrInnerShadowRight1a, clrInnerShadowRight1b)GTp鹰城网
                Dim penInnerShadowRight1 As Pen = New Pen(brushInnerShadowRight1)GTp鹰城网
                Dim brushInnerShadowRight2 As LinearGradientBrush = New LinearGradientBrush(ptInnerShadowRight2a, ptInnerShadowRight2b, clrInnerShadowRight2a, clrInnerShadowRight2b)GTp鹰城网
                Dim penInnerShadowRight2 As Pen = New Pen(brushInnerShadowRight2)GTp鹰城网
                g.DrawLine(penInnerShadowRight1, ptInnerShadowRight1a, ptInnerShadowRight1b)GTp鹰城网
                g.DrawLine(penInnerShadowRight2, ptInnerShadowRight2a, ptInnerShadowRight2b)GTp鹰城网
                penInnerShadowRight1.Dispose()GTp鹰城网
                penInnerShadowRight2.Dispose()GTp鹰城网
                brushInnerShadowRight1.Dispose()GTp鹰城网
                brushInnerShadowRight2.Dispose()GTp鹰城网
                Dim penTop As Pen = New Pen(Color.White)GTp鹰城网
                g.DrawLine(penTop, rcBorder.Left + 2, rcBorder.Top + 1, rcBorder.Right - 2, rcBorder.Top + 1)GTp鹰城网
                g.DrawLine(penTop, rcBorder.Left + 1, rcBorder.Top + 2, rcBorder.Right - 1, rcBorder.Top + 2)GTp鹰城网
                g.DrawLine(penTop, rcBorder.Left + 1, rcBorder.Top + 3, rcBorder.Right - 1, rcBorder.Top + 3)GTp鹰城网
                penTop.Dispose()GTp鹰城网
            End IfGTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawOuterShadow(ByVal g As Graphics)GTp鹰城网
            Dim brushOuterShadow As LinearGradientBrush = New LinearGradientBrush(ClientRectangle, clrOuterShadow1, clrOuterShadow2, LinearGradientMode.Vertical)GTp鹰城网
            g.FillRectangle(brushOuterShadow, ClientRectangle)GTp鹰城网
            brushOuterShadow.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawEllipseOuterShadow(ByVal g As Graphics)GTp鹰城网
            Dim brushOuterShadow As LinearGradientBrush = New LinearGradientBrush(ClientRectangle, clrOuterShadow1, clrOuterShadow2, LinearGradientMode.Vertical)GTp鹰城网
            g.FillRectangle(brushOuterShadow, ClientRectangle)GTp鹰城网
            brushOuterShadow.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawBorder(ByVal g As Graphics)GTp鹰城网
            Dim penBorder As Pen = New Pen(clrBorder)GTp鹰城网
            ControlPaint.DrawRoundedRectangle(g, penBorder, Me.BorderRectangle, sizeBorderPixelIndent)GTp鹰城网
            penBorder.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawEllipseBorder(ByVal g As Graphics)GTp鹰城网
            Dim penBorder As Pen = New Pen(Color.FromArgb(0, 0, 0))GTp鹰城网
            Dim oldSmoothingMode As SmoothingMode = g.SmoothingModeGTp鹰城网
            g.SmoothingMode = SmoothingMode.AntiAliasGTp鹰城网
            g.DrawEllipse(penBorder, Me.BorderRectangle)GTp鹰城网
            g.SmoothingMode = oldSmoothingModeGTp鹰城网
            penBorder.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawEllipseDefaultBorder(ByVal g As Graphics)GTp鹰城网
            Dim penTop2 As Pen = New Pen(Color.FromArgb(137, 173, 228), 2)GTp鹰城网
            Dim rcInFrame As Rectangle = New Rectangle(Me.BorderRectangle.X + 2, Me.BorderRectangle.Y + 1, Me.BorderRectangle.Width - 4, Me.BorderRectangle.Height - 2)GTp鹰城网
            Dim oldSmoothingMode As SmoothingMode = g.SmoothingModeGTp鹰城网
            g.SmoothingMode = SmoothingMode.AntiAliasGTp鹰城网
            g.DrawEllipse(penTop2, rcInFrame)GTp鹰城网
            g.SmoothingMode = oldSmoothingModeGTp鹰城网
            penTop2.Dispose()GTp鹰城网
        End SubGTp鹰城网

        Private Sub DrawEllipseHoverBorder(ByVal g As Graphics)GTp鹰城网
            Dim penTop2 As Pen = New Pen(Color.FromArgb(248, 178, 48), 2)GTp鹰城网
            Dim rcInFrame As Rectangle = New Rectangle(Me.BorderRectangle.X + 2, Me.BorderRectangle.Y + 1, Me.BorderRectangle.Width - 4, Me.BorderRectangle.Height - 2)GTp鹰城网
            Dim oldSmoothingMode As SmoothingMode = g.SmoothingModeGTp鹰城网
            g.SmoothingMode = SmoothingMode.AntiAliasGTp鹰城网
            g.DrawEllipse(penTop2, rcInFrame)GTp鹰城网
            g.SmoothingMode = oldSmoothingModeGTp鹰城网
            penTop2.Dispose()GTp鹰城网
        End SubGTp鹰城网

#End RegionGTp鹰城网

GTp鹰城网
    End ClassGTp鹰城网

End NamespaceGTp鹰城网

pdsbx.com