Imports System
Imports System.Enum
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Data
Imports System.Windows.Forms
Imports System.Drawing.Drawing2D
Imports System.Drawing.Design
Namespace LandlordAspx_xpctrl
Public Class emunType
Public Enum XPStyle
Default1
Blue
OliveGreen
Silver
End Enum
Public Enum BtnShape
Rectangle
Ellipse
End Enum
End Class
Friend NotInheritable Class ControlPaint
Private Sub New()
End Sub
Public Shared ReadOnly Property BorderColor() As Color
Get
Return Color.FromArgb(127, 157, 185)
End Get
End Property
Public Shared ReadOnly Property DisabledBorderColor() As Color
Get
Return Color.FromArgb(201, 199, 186)
End Get
End Property
Public Shared ReadOnly Property ButtonBorderColor() As Color
Get
Return Color.FromArgb(28, 81, 128)
End Get
End Property
Public Shared ReadOnly Property DisabledButtonBorderColor() As Color
Get
Return Color.FromArgb(202, 200, 187)
End Get
End Property
Public Shared ReadOnly Property DisabledBackColor() As Color
Get
Return Color.FromArgb(236, 233, 216)
End Get
End Property
Public Shared ReadOnly Property DisabledForeColor() As Color
Get
Return Color.FromArgb(161, 161, 146)
End Get
End Property
Public Shared Function GetStringFormat(ByVal contentAlignment As ContentAlignment) As StringFormat
If Not System.Enum.IsDefined(GetType(ContentAlignment), CType(contentAlignment, Integer)) Then
Throw New System.ComponentModel.InvalidEnumArgumentException("contentAlignment", CType(contentAlignment, Integer), GetType(ContentAlignment))
End If
Dim stringFormat As StringFormat = New StringFormat
Select Case contentAlignment
Case contentAlignment.MiddleCenter
stringFormat.LineAlignment = StringAlignment.Center
stringFormat.Alignment = StringAlignment.Center
' break
Case contentAlignment.MiddleLeft
stringFormat.LineAlignment = StringAlignment.Center
stringFormat.Alignment = StringAlignment.Near
' break
Case contentAlignment.MiddleRight
stringFormat.LineAlignment = StringAlignment.Center
stringFormat.Alignment = StringAlignment.Far
' break
Case contentAlignment.TopCenter
stringFormat.LineAlignment = StringAlignment.Near
stringFormat.Alignment = StringAlignment.Center
' break
Case contentAlignment.TopLeft
stringFormat.LineAlignment = StringAlignment.Near
stringFormat.Alignment = StringAlignment.Near
' break
Case contentAlignment.TopRight
stringFormat.LineAlignment = StringAlignment.Near
stringFormat.Alignment = StringAlignment.Far
' break
Case contentAlignment.BottomCenter
stringFormat.LineAlignment = StringAlignment.Far
stringFormat.Alignment = StringAlignment.Center
' break
Case contentAlignment.BottomLeft
stringFormat.LineAlignment = StringAlignment.Far
stringFormat.Alignment = StringAlignment.Near
' break
Case contentAlignment.BottomRight
stringFormat.LineAlignment = StringAlignment.Far
stringFormat.Alignment = StringAlignment.Far
' break
End Select
Return stringFormat
End Function
Public Shared Sub DrawRoundedRectangle(ByVal g As Graphics, ByVal p As Pen, ByVal rc As Rectangle, ByVal size As Size)
Dim oldSmoothingMode As SmoothingMode = g.SmoothingMode
g.SmoothingMode = SmoothingMode.AntiAlias
g.DrawLine(p, CType(rc.Left + size.Width / 2, Single), rc.Top, CType(rc.Right - size.Width / 2, Single), rc.Top)
g.DrawArc(p, rc.Right - size.Width, rc.Top, size.Width, size.Height, 270, 90)
g.DrawLine(p, rc.Right, CType(rc.Top + size.Height / 2, Single), rc.Right, CType(rc.Bottom - size.Height / 2, Single))
g.DrawArc(p, rc.Right - size.Width, rc.Bottom - size.Height, size.Width, size.Height, 0, 90)
g.DrawLine(p, CType(rc.Right - size.Width / 2, Single), rc.Bottom, CType(rc.Left + size.Width / 2, Single), rc.Bottom)
g.DrawArc(p, rc.Left, rc.Bottom - size.Height, size.Width, size.Height, 90, 90)
g.DrawLine(p, rc.Left, CType(rc.Bottom - size.Height / 2, Single), rc.Left, CType(rc.Top + size.Height / 2, Single))
g.DrawArc(p, rc.Left, rc.Top, size.Width, size.Height, 180, 90)
g.SmoothingMode = oldSmoothingMode
End Sub
Public Shared Sub DrawBorder(ByVal g As Graphics, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer)
g.DrawRectangle(New Pen(ControlPaint.BorderColor, 0), x, y, width, height)
End Sub
Public Shared Sub EraseExcessOldDropDown(ByVal g As Graphics, ByVal newButton As Rectangle)
g.FillRectangle(New SolidBrush(SystemColors.Window), newButton.X - 2, newButton.Y, 2, newButton.Height + 1)
End Sub
End Class
Public Class XP_Button
Inherits System.Windows.Forms.Button
Public Enum ControlState
Normal
Hover
Pressed
Default1
Disabled
End Enum
Private components As System.ComponentModel.Container
Public Sub New()
MyBase.New()
InitializeComponent()
Me.SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.DoubleBuffer, True)
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
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
'
'XPButton
'
Me.Name = "XPButton"
End Sub
#Region "Static members"
Private Shared ReadOnly sizeBorderPixelIndent As Size = New Size(4, 4)
Dim clrOuterShadow1 As Color = Color.FromArgb(64, 164, 164, 164)
Dim clrOuterShadow2 As Color = Color.FromArgb(64, Color.White)
Dim clrBackground1 As Color = Color.FromArgb(250, 250, 248)
Dim clrBackground2 As Color = Color.FromArgb(240, 240, 234)
Dim clrBorder As Color = Color.FromArgb(0, 60, 116)
Dim clrInnerShadowBottom1 As Color = Color.FromArgb(236, 235, 230)
Dim clrInnerShadowBottom2 As Color = Color.FromArgb(226, 223, 214)
Dim clrInnerShadowBottom3 As Color = Color.FromArgb(214, 208, 197)
Dim clrInnerShadowRight1a As Color = Color.FromArgb(128, 236, 234, 230)
Dim clrInnerShadowRight1b As Color = Color.FromArgb(128, 224, 220, 212)
Dim clrInnerShadowRight2a As Color = Color.FromArgb(128, 234, 228, 218)
Dim clrInnerShadowRight2b As Color = Color.FromArgb(128, 212, 208, 196)
Dim clrInnerShadowBottomPressed1 As Color = Color.FromArgb(234, 233, 227)
Dim clrInnerShadowBottomPressed2 As Color = Color.FromArgb(242, 241, 238)
Dim clrInnerShadowTopPressed1 As Color = Color.FromArgb(209, 204, 193)
Dim clrInnerShadowTopPressed2 As Color = Color.FromArgb(220, 216, 207)
Dim clrInnerShadowLeftPressed1 As Color = Color.FromArgb(216, 213, 203)
Dim clrInnerShadowLeftPressed2 As Color = Color.FromArgb(222, 220, 211)
#End Region
#Region "Constructors"
'Shared EDButton()
'sizeBorderPixelIndent = New Size(4, 4)
'clrOuterShadow1 = Color.FromArgb(64, 164, 164, 164)
'clrOuterShadow2 = Color.FromArgb(64, Color.White)
'clrBackground1 = Color.FromArgb(250, 250, 248)
'clrBackground2 = Color.FromArgb(240, 240, 234)
'clrBorder = Color.FromArgb(0, 60, 116)
' clrInnerShadowBottom1 = Color.FromArgb(236, 235, 230)
'clrInnerShadowBottom2 = Color.FromArgb(226, 223, 214)
'clrInnerShadowBottom3 = Color.FromArgb(214, 208, 197)
'clrInnerShadowRight1a = Color.FromArgb(128, 236, 234, 230)
'clrInnerShadowRight1b = Color.FromArgb(128, 224, 220, 212)
'clrInnerShadowRight2a = Color.FromArgb(128, 234, 228, 218)
' clrInnerShadowRight2b = Color.FromArgb(128, 212, 208, 196)
' clrInnerShadowBottomPressed1 = Color.FromArgb(234, 233, 227)
'clrInnerShadowBottomPressed2 = Color.FromArgb(242, 241, 238)
'clrInnerShadowTopPressed1 = Color.FromArgb(209, 204, 193)
'clrInnerShadowTopPressed2 = Color.FromArgb(220, 216, 207)
' clrInnerShadowLeftPressed1 = Color.FromArgb(216, 213, 203)
'clrInnerShadowLeftPressed2 = Color.FromArgb(222, 220, 211)
'End Sub
#End Region
#Region "Properties"
Dim enmState As ControlState = ControlState.Normal
Dim bCanClick As Boolean = False
Dim m_btnStyle As emunType.XPStyle = emunType.XPStyle.Default1
Dim m_btnShape As emunType.BtnShape = emunType.BtnShape.Rectangle
Dim locPoint As Point
Public Shadows Property FlatStyle() As FlatStyle
Get
Return MyBase.FlatStyle
End Get
Set(ByVal Value As FlatStyle)
MyBase.FlatStyle = FlatStyle.Standard
End Set
End Property
Public Property BtnShape() As emunType.BtnShape
Get
Return m_btnShape
End Get
Set(ByVal Value As emunType.BtnShape)
m_btnShape = Value
MyBase.Invalidate()
End Set
End Property
<DefaultValue("Blue"), System.ComponentModel.RefreshProperties(RefreshProperties.Repaint)> _
Public Property BtnStyle() As emunType.XPStyle
Get
Return m_btnStyle
End Get
Set(ByVal Value As emunType.XPStyle)
m_btnStyle = Value
Me.Invalidate()
End Set
End Property
Public Property AdjustImageLocation() As Point
Get
Return locPoint
End Get
Set(ByVal Value As Point)
locPoint = Value
Me.Invalidate()
End Set
End Property
Private ReadOnly Property BorderRectangle() As Rectangle
Get
Dim rc As Rectangle = Me.ClientRectangle
Return New Rectangle(1, 1, rc.Width - 3, rc.Height - 3)
End Get
End Property
#End Region
#Region "Methods"
Protected Overloads Overrides Sub OnClick(ByVal ea As EventArgs)
Me.Capture = False
bCanClick = False
If Me.ClientRectangle.Contains(Me.PointToClient(Control.MousePosition)) Then
enmState = ControlState.Hover
Else
enmState = ControlState.Normal
End If
Me.Invalidate()
MyBase.OnClick(ea)
End Sub
Protected Overloads Overrides Sub OnMouseEnter(ByVal ea As EventArgs)
MyBase.OnMouseEnter(ea)
enmState = ControlState.Hover
Me.Invalidate()
End Sub
Protected Overloads Overrides Sub OnMouseDown(ByVal mea As MouseEventArgs)
MyBase.OnMouseDown(mea)
If mea.Button = MouseButtons.Left Then
bCanClick = True
enmState = ControlState.Pressed
Me.Invalidate()
End If
End Sub
Protected Overloads Overrides Sub OnMouseMove(ByVal mea As MouseEventArgs)
MyBase.OnMouseMove(mea)
If ClientRectangle.Contains(mea.X, mea.Y) Then
If enmState = ControlState.Hover AndAlso Me.Capture AndAlso Not bCanClick Then
bCanClick = True
enmState = ControlState.Pressed
Me.Invalidate()
End If
Else
If enmState = ControlState.Pressed Then
bCanClick = False
enmState = ControlState.Hover
Me.Invalidate()
End If
End If
End Sub
Protected Overloads Overrides Sub OnMouseLeave(ByVal ea As EventArgs)
MyBase.OnMouseLeave(ea)
enmState = ControlState.Normal
Me.Invalidate()
End Sub
Protected Overloads Overrides Sub OnPaint(ByVal pea As PaintEventArgs)
Me.OnPaintBackground(pea)
Select Case enmState
Case ControlState.Normal
If Me.Enabled Then
If Me.Focused OrElse Me.IsDefault Then
Select Case m_btnShape
Case emunType.BtnShape.Rectangle
OnDrawDefault(pea.Graphics)
' break
Case emunType.BtnShape.Ellipse
OnDrawDefaultEllipse(pea.Graphics)
' break
End Select
Else
Select Case m_btnShape
Case emunType.BtnShape.Rectangle
OnDrawNormal(pea.Graphics)
' break
Case emunType.BtnShape.Ellipse
OnDrawNormalEllipse(pea.Graphics)
' break
End Select
End If
Else
OnDrawDisabled(pea.Graphics)
End If
' break
Case ControlState.Hover
Select Case m_btnShape
Case emunType.BtnShape.Rectangle
OnDrawHover(pea.Graphics)
' break
Case emunType.BtnShape.Ellipse
OnDrawHoverEllipse(pea.Graphics)
' break
End Select
' break
Case ControlState.Pressed
Select Case m_btnShape
Case emunType.BtnShape.Rectangle
OnDrawPressed(pea.Graphics)
' break
Case emunType.BtnShape.Ellipse
OnDrawPressedEllipse(pea.Graphics)
' break
End Select
' break
End Select
OnDrawTextAndImage(pea.Graphics)
End Sub
Protected Overloads Overrides Sub OnEnabledChanged(ByVal ea As EventArgs)
MyBase.OnEnabledChanged(ea)
enmState = ControlState.Normal
Me.Invalidate()
End Sub
Private Sub OnDrawNormal(ByVal g As Graphics)
DrawNormalButton(g)
End Sub
Private Sub OnDrawHoverEllipse(ByVal g As Graphics)
DrawNormalEllipse(g)
DrawEllipseHoverBorder(g)
DrawEllipseBorder(g)
End Sub
Private Sub OnDrawHover(ByVal g As Graphics)
DrawNormalButton(g)
Dim rcBorder As Rectangle = Me.BorderRectangle
Dim penTop1 As Pen = New Pen(Color.FromArgb(255, 240, 207))
Dim penTop2 As Pen = New Pen(Color.FromArgb(253, 216, 137))
g.DrawLine(penTop1, rcBorder.Left + 2, rcBorder.Top + 1, rcBorder.Right - 2, rcBorder.Top + 1)
g.DrawLine(penTop2, rcBorder.Left + 1, rcBorder.Top + 2, rcBorder.Right - 1, rcBorder.Top + 2)
penTop1.Dispose()
penTop2.Dispose()
Dim penBottom1 As Pen = New Pen(Color.FromArgb(248, 178, 48))
Dim penBottom2 As Pen = New Pen(Color.FromArgb(229, 151, 0))
g.DrawLine(penBottom1, rcBorder.Left + 1, rcBorder.Bottom - 2, rcBorder.Right - 1, rcBorder.Bottom - 2)
g.DrawLine(penBottom2, rcBorder.Left + 2, rcBorder.Bottom - 1, rcBorder.Right - 2, rcBorder.Bottom - 1)
penBottom1.Dispose()
penBottom2.Dispose()
Dim rcLeft As Rectangle = New Rectangle(rcBorder.Left + 1, rcBorder.Top + 3, 2, rcBorder.Height - 5)
Dim rcRight As Rectangle = New Rectangle(rcBorder.Right - 2, rcBorder.Top + 3, 2, rcBorder.Height - 5)
Dim brushSide As LinearGradientBrush = New LinearGradientBrush(rcLeft, Color.FromArgb(254, 221, 149), Color.FromArgb(249, 180, 53), LinearGradientMode.Vertical)
g.FillRectangle(brushSide, rcLeft)
g.FillRectangle(brushSide, rcRight)
brushSide.Dispose()
End Sub
Private Sub OnDrawPressedEllipse(ByVal g As Graphics)
DrawPressedEllipse(g)
DrawEllipseBorder(g)
End Sub
Private Sub DrawPressedEllipse(ByVal g As Graphics)
Dim rcBorder As Rectangle = Me.BorderRectangle
Dim rcBackground As Rectangle = New Rectangle(rcBorder.X + 1, rcBorder.Y + 1, rcBorder.Width - 1, rcBorder.Height - 1)
Dim brushBackground As SolidBrush = New SolidBrush(Color.FromArgb(226, 225, 218))
g.FillEllipse(brushBackground, rcBackground)
End Sub
Private Sub OnDrawPressed(ByVal g As Graphics)
Dim rcBorder As Rectangle = Me.BorderRectangle
DrawOuterShadow(g)
Dim rcBackground As Rectangle = New Rectangle(rcBorder.X + 1, rcBorder.Y + 1, rcBorder.Width - 1, rcBorder.Height - 1)
Dim brushBackground As SolidBrush = New SolidBrush(Color.FromArgb(226, 225, 218))
g.FillRectangle(brushBackground, rcBackground)
brushBackground.Dispose()
DrawBorder(g)
Dim penInnerShadowBottomPressed1 As Pen = New Pen(clrInnerShadowBottomPressed1)
Dim penInnerShadowBottomPressed2 As Pen = New Pen(clrInnerShadowBottomPressed2)
g.DrawLine(penInnerShadowBottomPressed1, rcBorder.Left + 1, rcBorder.Bottom - 2, rcBorder.Right - 1, rcBorder.Bottom - 2)
g.DrawLine(penInnerShadowBottomPressed2, rcBorder.Left + 2, rcBorder.Bottom - 1, rcBorder.Right - 2, rcBorder.Bottom - 1)
penInnerShadowBottomPressed1.Dispose()
penInnerShadowBottomPressed2.Dispose()
Dim penInnerShadowTopPressed1 As Pen = New Pen(clrInnerShadowTopPressed1)
Dim penInnerShadowTopPressed2 As Pen = New Pen(clrInnerShadowTopPressed2)
g.DrawLine(penInnerShadowTopPressed1, rcBorder.Left + 2, rcBorder.Top + 1, rcBorder.Right - 2, rcBorder.Top + 1)
g.DrawLine(penInnerShadowTopPressed2, rcBorder.Left + 1, rcBorder.Top + 2, rcBorder.Right - 1, rcBorder.Top + 2)
penInnerShadowTopPressed1.Dispose()
penInnerShadowTopPressed2.Dispose()
Dim penInnerShadowLeftPressed1 As Pen = New Pen(clrInnerShadowLeftPressed1)
Dim penInnerShadowLeftPressed2 As Pen = New Pen(clrInnerShadowLeftPressed2)
g.DrawLine(penInnerShadowLeftPressed1, rcBorder.Left + 1, rcBorder.Top + 3, rcBorder.Left + 1, rcBorder.Bottom - 3)
g.DrawLine(penInnerShadowLeftPressed2, rcBorder.Left + 2, rcBorder.Top + 3, rcBorder.Left + 2, rcBorder.Bottom - 3)
penInnerShadowLeftPressed1.Dispose()
penInnerShadowLeftPressed2.Dispose()
End Sub
Private Sub OnDrawNormalEllipse(ByVal g As Graphics)
DrawNormalEllipse(g)
DrawEllipseBorder(g)
End Sub
Private Sub OnDrawDefaultEllipse(ByVal g As Graphics)
DrawNormalEllipse(g)
DrawEllipseDefaultBorder(g)
DrawEllipseBorder(g)
End Sub
Private Sub OnDrawDefault(ByVal g As Graphics)
DrawNormalButton(g)
Dim rcBorder As Rectangle = Me.BorderRectangle
Dim penTop1 As Pen = New Pen(Color.FromArgb(206, 231, 255))
Dim penTop2 As Pen = New Pen(Color.FromArgb(188, 212, 246))
g.DrawLine(penTop1, rcBorder.Left + 2, rcBorder.Top + 1, rcBorder.Right - 2, rcBorder.Top + 1)
g.DrawLine(penTop2, rcBorder.Left + 1, rcBorder.Top + 2, rcBorder.Right - 1, rcBorder.Top + 2)
penTop1.Dispose()
penTop2.Dispose()
Dim penBottom1 As Pen = New Pen(Color.FromArgb(137, 173, 228))
Dim penBottom2 As Pen = New Pen(Color.FromArgb(105, 130, 238))
g.DrawLine(penBottom1, rcBorder.Left + 1, rcBorder.Bottom - 2, rcBorder.Right - 1, rcBorder.Bottom - 2)
g.DrawLine(penBottom2, rcBorder.Left + 2, rcBorder.Bottom - 1, rcBorder.Right - 2, rcBorder.Bottom - 1)
penBottom1.Dispose()
penBottom2.Dispose()
Dim rcLeft As Rectangle = New Rectangle(rcBorder.Left + 1, rcBorder.Top + 3, 2, rcBorder.Height - 5)
Dim rcRight As Rectangle = New Rectangle(rcBorder.Right - 2, rcBorder.Top + 3, 2, rcBorder.Height - 5)
Dim brushSide As LinearGradientBrush = New LinearGradientBrush(rcLeft, Color.FromArgb(186, 211, 245), Color.FromArgb(137, 173, 228), LinearGradientMode.Vertical)
g.FillRectangle(brushSide, rcLeft)
g.FillRectangle(brushSide, rcRight)
brushSide.Dispose()
End Sub
Private Sub OnDrawDisabled(ByVal g As Graphics)
Dim rcBorder As Rectangle = Me.BorderRectangle
Dim rcBackground As Rectangle = New Rectangle(rcBorder.X + 1, rcBorder.Y + 1, rcBorder.Width - 1, rcBorder.Height - 1)
Dim brushBackground As SolidBrush = New SolidBrush(Color.FromArgb(245, 244, 234))
g.FillRectangle(brushBackground, rcBackground)
brushBackground.Dispose()
Dim penBorder As Pen = New Pen(Color.FromArgb(201, 199, 186))
ControlPaint.DrawRoundedRectangle(g, penBorder, rcBorder, sizeBorderPixelIndent)
penBorder.Dispose()
End Sub
Private Sub OnDrawTextAndImage(ByVal g As Graphics)
Dim brushText As SolidBrush
If Enabled Then
brushText = New SolidBrush(ForeColor)
Else
brushText = New SolidBrush(ControlPaint.DisabledForeColor)
End If
Dim sf As StringFormat = ControlPaint.GetStringFormat(Me.TextAlign)
sf.HotkeyPrefix = System.Drawing.Text.HotkeyPrefix.Show
If Not (Me.Image Is Nothing) Then
Dim rc As Rectangle = New Rectangle
Dim ImagePoint As Point = New Point(6, 4)
Select Case Me.ImageAlign
Case ContentAlignment.MiddleRight
rc.Width = Me.ClientRectangle.Width - Me.Image.Width - 8
rc.Height = Me.ClientRectangle.Height
rc.X = 0
rc.Y = 0
ImagePoint.X = rc.Width
ImagePoint.Y = Me.ClientRectangle.Height / 2 - Image.Height / 2
' break
Case ContentAlignment.TopCenter
ImagePoint.Y = 2
ImagePoint.X = (Me.ClientRectangle.Width - Me.Image.Width) / 2
rc.Width = Me.ClientRectangle.Width
rc.Height = Me.ClientRectangle.Height - Me.Image.Height - 4
rc.X = Me.ClientRectangle.X
rc.Y = Me.Image.Height
' break
Case ContentAlignment.MiddleCenter
ImagePoint.X = (Me.ClientRectangle.Width - Me.Image.Width) / 2
ImagePoint.Y = (Me.ClientRectangle.Height - Me.Image.Height) / 2
rc.Width = 0
rc.Height = 0
rc.X = Me.ClientRectangle.Width
rc.Y = Me.ClientRectangle.Height
' break
Case Else
ImagePoint.X = 6
ImagePoint.Y = Me.ClientRectangle.Height / 2 - Image.Height / 2
rc.Width = Me.ClientRectangle.Width - Me.Image.Width
rc.Height = Me.ClientRectangle.Height
rc.X = Me.Image.Width
rc.Y = 0
' break
End Select
ImagePoint.X += locPoint.X
ImagePoint.Y += locPoint.Y
If Me.Enabled Then
g.DrawImage(Me.Image, ImagePoint)
Else
System.Windows.Forms.ControlPaint.DrawImageDisabled(g, Me.Image, locPoint.X, locPoint.Y, Me.BackColor)
End If
If Not (ContentAlignment.MiddleCenter = Me.ImageAlign) Then
Dim rs As RectangleF
rs.X = rc.X
rs.Y = rc.Y
rs.Width = rc.Width
rs.Height = rc.Height
g.DrawString(Me.Text, Me.Font, brushText, rs, sf)
End If
Else
Dim rs As RectangleF
rs.X = Me.ClientRectangle.X
rs.Y = Me.ClientRectangle.Y
rs.Width = Me.ClientRectangle.Width
rs.Height = Me.ClientRectangle.Height
g.DrawString(Me.Text, Me.Font, brushText, rs, sf)
End If
brushText.Dispose()
sf.Dispose()
End Sub
Private Sub DrawNormalEllipse(ByVal g As Graphics)
Dim rcBackground As Rectangle = Me.BorderRectangle
Dim brushBackground As LinearGradientBrush = Nothing
Select Case m_btnStyle
Case emunType.XPStyle.Default1
brushBackground = New LinearGradientBrush(rcBackground, clrBackground1, clrBackground2, LinearGradientMode.Vertical)
' break
Case emunType.XPStyle.Blue
brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(248, 252, 253), Color.FromArgb(172, 171, 201), LinearGradientMode.Vertical)
' break
Case emunType.XPStyle.OliveGreen
brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(250, 250, 240), Color.FromArgb(235, 220, 190), LinearGradientMode.Vertical)
' break
Case emunType.XPStyle.Silver
brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(253, 253, 253), Color.FromArgb(205, 205, 205), LinearGradientMode.Vertical)
' break
End Select
Dim relativeIntensities() As Single = {0, 0.008, 1}
Dim relativePositions() As Single = {0, 0.22, 1}
Dim blend As Blend = New Blend
blend.Factors = relativeIntensities
blend.Positions = relativePositions
brushBackground.Blend = blend
g.FillEllipse(brushBackground, rcBackground)
End Sub
Private Sub DrawNormalButton(ByVal g As Graphics)
Dim rcBorder As Rectangle = Me.BorderRectangle
DrawOuterShadow(g)
Dim rcBackground As Rectangle = New Rectangle(rcBorder.X + 1, rcBorder.Y + 1, rcBorder.Width - 1, rcBorder.Height - 1)
Dim brushBackground As LinearGradientBrush = Nothing
Select Case m_btnStyle
Case emunType.XPStyle.Default1
brushBackground = New LinearGradientBrush(rcBackground, clrBackground1, clrBackground2, LinearGradientMode.Vertical)
' break
Case emunType.XPStyle.Blue
brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(248, 252, 253), Color.FromArgb(172, 171, 201), LinearGradientMode.Vertical)
' break
Case emunType.XPStyle.OliveGreen
brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(250, 250, 240), Color.FromArgb(235, 220, 190), LinearGradientMode.Vertical)
' break
Case emunType.XPStyle.Silver
brushBackground = New LinearGradientBrush(rcBackground, Color.FromArgb(253, 253, 253), Color.FromArgb(205, 205, 205), LinearGradientMode.Vertical)
' break
End Select
Dim relativeIntensities() As Single = {0, 0.08, 1}
Dim relativePositions() As Single = {0, 0.32, 1}
Dim blend As Blend = New Blend
blend.Factors = relativeIntensities
blend.Positions = relativePositions
brushBackground.Blend = blend
g.FillRectangle(brushBackground, rcBackground)
brushBackground.Dispose()
DrawBorder(g)
If emunType.XPStyle.Default1 = m_btnStyle Then
Dim penInnerShadowBottom1 As Pen = New Pen(clrInnerShadowBottom1)
Dim penInnerShadowBottom2 As Pen = New Pen(clrInnerShadowBottom2)
Dim penInnerShadowBottom3 As Pen = New Pen(clrInnerShadowBottom3)
g.DrawLine(penInnerShadowBottom1, rcBorder.Left + 1, rcBorder.Bottom - 3, rcBorder.Right - 1, rcBorder.Bottom - 3)
g.DrawLine(penInnerShadowBottom2, rcBorder.Left + 1, rcBorder.Bottom - 2, rcBorder.Right - 1, rcBorder.Bottom - 2)
g.DrawLine(penInnerShadowBottom3, rcBorder.Left + 2, rcBorder.Bottom - 1, rcBorder.Right - 2, rcBorder.Bottom - 1)
penInnerShadowBottom1.Dispose()
penInnerShadowBottom2.Dispose()
penInnerShadowBottom3.Dispose()
Dim ptInnerShadowRight1a As Point = New Point(rcBorder.Right - 2, rcBorder.Top + 1)
Dim ptInnerShadowRight1b As Point = New Point(rcBorder.Right - 2, rcBorder.Bottom - 1)
Dim ptInnerShadowRight2a As Point = New Point(rcBorder.Right - 1, rcBorder.Top + 2)
Dim ptInnerShadowRight2b As Point = New Point(rcBorder.Right - 1, rcBorder.Bottom - 2)
Dim brushInnerShadowRight1 As LinearGradientBrush = New LinearGradientBrush(ptInnerShadowRight1a, ptInnerShadowRight1b, clrInnerShadowRight1a, clrInnerShadowRight1b)
Dim penInnerShadowRight1 As Pen = New Pen(brushInnerShadowRight1)
Dim brushInnerShadowRight2 As LinearGradientBrush = New LinearGradientBrush(ptInnerShadowRight2a, ptInnerShadowRight2b, clrInnerShadowRight2a, clrInnerShadowRight2b)
Dim penInnerShadowRight2 As Pen = New Pen(brushInnerShadowRight2)
g.DrawLine(penInnerShadowRight1, ptInnerShadowRight1a, ptInnerShadowRight1b)
g.DrawLine(penInnerShadowRight2, ptInnerShadowRight2a, ptInnerShadowRight2b)
penInnerShadowRight1.Dispose()
penInnerShadowRight2.Dispose()
brushInnerShadowRight1.Dispose()
brushInnerShadowRight2.Dispose()
Dim penTop As Pen = New Pen(Color.White)
g.DrawLine(penTop, rcBorder.Left + 2, rcBorder.Top + 1, rcBorder.Right - 2, rcBorder.Top + 1)
g.DrawLine(penTop, rcBorder.Left + 1, rcBorder.Top + 2, rcBorder.Right - 1, rcBorder.Top + 2)
g.DrawLine(penTop, rcBorder.Left + 1, rcBorder.Top + 3, rcBorder.Right - 1, rcBorder.Top + 3)
penTop.Dispose()
End If
End Sub
Private Sub DrawOuterShadow(ByVal g As Graphics)
Dim brushOuterShadow As LinearGradientBrush = New LinearGradientBrush(ClientRectangle, clrOuterShadow1, clrOuterShadow2, LinearGradientMode.Vertical)
g.FillRectangle(brushOuterShadow, ClientRectangle)
brushOuterShadow.Dispose()
End Sub
Private Sub DrawEllipseOuterShadow(ByVal g As Graphics)
Dim brushOuterShadow As LinearGradientBrush = New LinearGradientBrush(ClientRectangle, clrOuterShadow1, clrOuterShadow2, LinearGradientMode.Vertical)
g.FillRectangle(brushOuterShadow, ClientRectangle)
brushOuterShadow.Dispose()
End Sub
Private Sub DrawBorder(ByVal g As Graphics)
Dim penBorder As Pen = New Pen(clrBorder)
ControlPaint.DrawRoundedRectangle(g, penBorder, Me.BorderRectangle, sizeBorderPixelIndent)
penBorder.Dispose()
End Sub
Private Sub DrawEllipseBorder(ByVal g As Graphics)
Dim penBorder As Pen = New Pen(Color.FromArgb(0, 0, 0))
Dim oldSmoothingMode As SmoothingMode = g.SmoothingMode
g.SmoothingMode = SmoothingMode.AntiAlias
g.DrawEllipse(penBorder, Me.BorderRectangle)
g.SmoothingMode = oldSmoothingMode
penBorder.Dispose()
End Sub
Private Sub DrawEllipseDefaultBorder(ByVal g As Graphics)
Dim penTop2 As Pen = New Pen(Color.FromArgb(137, 173, 228), 2)
Dim rcInFrame As Rectangle = New Rectangle(Me.BorderRectangle.X + 2, Me.BorderRectangle.Y + 1, Me.BorderRectangle.Width - 4, Me.BorderRectangle.Height - 2)
Dim oldSmoothingMode As SmoothingMode = g.SmoothingMode
g.SmoothingMode = SmoothingMode.AntiAlias
g.DrawEllipse(penTop2, rcInFrame)
g.SmoothingMode = oldSmoothingMode
penTop2.Dispose()
End Sub
Private Sub DrawEllipseHoverBorder(ByVal g As Graphics)
Dim penTop2 As Pen = New Pen(Color.FromArgb(248, 178, 48), 2)
Dim rcInFrame As Rectangle = New Rectangle(Me.BorderRectangle.X + 2, Me.BorderRectangle.Y + 1, Me.BorderRectangle.Width - 4, Me.BorderRectangle.Height - 2)
Dim oldSmoothingMode As SmoothingMode = g.SmoothingMode
g.SmoothingMode = SmoothingMode.AntiAlias
g.DrawEllipse(penTop2, rcInFrame)
g.SmoothingMode = oldSmoothingMode
penTop2.Dispose()
End Sub
#End Region
End Class
End Namespace
本文地址:http://com.8s8s.com/it/it41639.htm