使用gdi+畫了一個Label,支持陰影,圓形邊框,漸變背景,其中較重要的幾個應用
1/繪畫區域的獲得:
Private Sub GetRoundRect()
Dim gp As New GraphicsPath
gp.StartFigure()
gp.AddLine(PSL + RC, PST, PSL + RL - RC, PST)
gp.AddArc(New RectangleF(PSL + RL - RC * 2, PST, RC * 2, RC * 2), 270, 90)
gp.AddLine(PSL + RL, PST + RC, PSL + RL, PST + RW - RC)
gp.AddArc(New RectangleF(PSL + RL - RC * 2, PST + RW - RC * 2, RC * 2, RC * 2), 0, 90)
gp.AddLine(PSL + RL - RC, PST + RW, PSL + RC, PST + RW)
gp.AddArc(New RectangleF(PSL, PST + RW - RC * 2, RC * 2, RC * 2), 90, 90)
gp.AddLine(PSL, PST + RW - RC, PSL, PST + RC)
gp.AddArc(New RectangleF(PSL, PST, RC * 2, RC * 2), 180, 90)
gp.CloseFigure()
m_RoundPath = gp.Clone
gp.Dispose()
End Sub
繪制區域:
Dim ShadowRegion1 As Region = New Region(m_RoundPath)
Dim Sbrush1 As New SolidBrush(Color.FromArgb(20, Color.Black))
pe.Graphics.FillRegion(Sbrush1, ShadowRegion1)
ShadowRegion1.Dispose()
創建漸變色刷:
Private Sub CreateGradientBrushes()
If Me.Width > 0 AndAlso Me.Height > 0 Then
If Not (m_brush Is Nothing) Then m_brush.Dispose()
m_brush = New LinearGradientBrush(Me.ClientRectangle, m_StartColor, m_EndColor, m_GradientMode)
End If
End Sub
繪製漸變區域:
CreateGradientBrushes()
e.Graphics.FillRegion(m_brush, New Region(m_RoundPath))
漂亮極了.