sábado, 25 de maio de 2013

on

Imports System.Drawing.Drawing2D

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CenterToParent()
        Me.SetStyle(ControlStyles.ResizeRedraw, True)
        Me.SetStyle(ControlStyles.DoubleBuffer, True)
        Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)

    End Sub


    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
        Static i As Integer
        i += 1
        If i = 360 Then
            i = 0
        End If
        Me.BackgroundImage = DrawProgressBar(e.Graphics, i)
    End Sub

    Private Function DrawProgressBar(ByVal g As Graphics, ByVal angle As Integer) As Bitmap
        Dim bmp As New Bitmap(Me.ClientRectangle.Width, Me.ClientRectangle.Height)
        g = Graphics.FromImage(bmp)
        Dim percent As Double
        percent = Math.Round(angle * 100 / 360, 1)
        Dim gp As New GraphicsPath
        Dim rect As Rectangle = New Rectangle(0, 0, bmp.Width, bmp.Height)
        Dim sf As New StringFormat
        sf.Alignment = StringAlignment.Center
        sf.LineAlignment = StringAlignment.Center
        g.DrawString(percent & " %", New Font("Arial", 20, FontStyle.Regular), Brushes.Black, New Point(rect.Width / 2, rect.Height / 2), sf)
        g.DrawEllipse(Pens.Black, rect)
        gp.AddPie(rect, 180, angle)



        Dim holeRect As Rectangle = New Rectangle(rect.X + 15, rect.Y + 15, rect.Width - 30, rect.Height - 30)
        g.DrawEllipse(Pens.Black, holeRect)

        g.Clip = (New Region(gp))

        gp.AddPie(holeRect, 180, angle)
        Dim gb As New LinearGradientBrush(rect, Color.Red, Color.Blue, 45)

        g.FillPath(gb, gp)
        Invalidate(rect)

        Return bmp
    End Function


End Class


 Espero ter ajudado... Abraços!

0 comentários:

Postar um comentário