使用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))




漂亮極了.

posted on 2005-09-10 14:15  James Wong   阅读(665)  评论(0编辑  收藏  举报