so just drag and drop it into your form
now you can just do your coding works and other things,
heres the code :
'Creator: Aeonhack
'Release: January 6th, 2010
'Version: 1.0.0.0
'Website: www.elitevs.net
'Colors modified by Zer0, original was green and is lost.
Imports System.Drawing.Drawing2D
Public Class RadialBar : Inherits Control
Sub New()
Size = New Size(150, 150)
Font = New Font("Verdana", 14.0!)
End Sub
'Notice in our properties, in the set routine we call 'Invalidate()' this will cause the
'control to redraw anytime the values are changed.
Private _Value As Long
Public Property Value() As Long
Get
Return _Value
End Get
Set(ByVal v As Long)
If v > _Maximum Then v = _Maximum
_Value = v : Invalidate()
End Set
End Property
Private _Maximum As Long = 100
Public Property Maximum() As Long
Get
Return _Maximum
End Get
Set(ByVal v As Long)
If v < 1 Then v = 1
_Maximum = v : Invalidate()
End Set
End Property
Private _Thickness As Integer = 20
Public Property Thickness() As Integer
Get
Return _Thickness
End Get
Set(ByVal v As Integer)
_Thickness = v : Invalidate()
End Set
End Property
'Handle PaintBackground to prevent flicker
Protected Overrides Sub OnPaintBackground(ByVal p As PaintEventArgs)
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
'Create image buffer
Using B As New Bitmap(Width, Height)
Using G As Graphics = Graphics.FromImage(B)
'Enable anti-aliasing to prevent rough edges
G.SmoothingMode = SmoothingMode.HighQuality
'Fill background color
G.Clear(BackColor)
'Draw progress background
Using T As New LinearGradientBrush(ClientRectangle, Color.White, Color.White, LinearGradientMode.Vertical)
Using P As New Pen(T, Thickness)
G.DrawArc(P, CInt(Thickness / 2), CInt(Thickness / 2), Width - Thickness - 1, Height - Thickness - 1, 0, 360)
End Using
End Using
'Draw progress
Using T As New LinearGradientBrush(ClientRectangle, Color.White, Color.Gray, LinearGradientMode.Vertical)
Using P As New Pen(T, Thickness)
P.StartCap = LineCap.Round : P.EndCap = LineCap.Round
G.DrawArc(P, CInt(Thickness / 2), CInt(Thickness / 2), Width - Thickness - 1, Height - Thickness - 1, -90, CInt((360 / _Maximum) * _Value))
End Using
End Using
'Draw center
Using T As New LinearGradientBrush(ClientRectangle, Color.Gray, Color.Black, LinearGradientMode.Vertical)
G.FillEllipse(T, Thickness, Thickness, Width - Thickness * 2 - 1, Height - Thickness * 2 - 1)
End Using
'Draw progress string
Dim S As SizeF = G.MeasureString(CStr(CInt((100 / _Maximum) * _Value)), Font)
G.DrawString(CStr(CInt((100 / _Maximum) * _Value)), Font, Brushes.White, CInt(Width / 2 - S.Width / 2), CInt(Height / 2 - S.Height / 2))
'Draw outter border
G.DrawEllipse(Pens.Black, 0, 0, Width - 1, Height - 1)
'Draw inner border
G.DrawEllipse(Pens.Black, Thickness, Thickness, Width - Thickness * 2 - 1, Height - Thickness * 2 - 1)
'Output the buffered image
e.Graphics.DrawImage(B, 0, 0)
End Using
End Using
End Sub
End Class
have fun with your new circular progress bar



8 comments
nice job :)
ReplyHi,their I would love for you to teach me how write/design from scratch a complete real looking Radial Gauge in vb.net gdi+ ,i can't find any tutorials nor books specific on this design.I would love to learn properly from start to finish writing the code to make my own ActiviX.dll or Just a class project type controls for my own learning and projects?
ReplyThank you
Or you could write to my email pavlovski_dushko@yahoo.com.au or compile a pdf or doc for me to learn or what ever way you can help me I will be most grateful..Thank you
ReplyHi,
ReplyMaybe this what you're looking for : http://www.codeproject.com/Articles/20341/Aqua-Gauge
Thanks
Hi their I know about the aqua-gauge control site and other sites, but none of them explain how properly from the start in VB.NET that's why i'm asking for your HELP here on how to from scratch?
ReplyPLEASE HELP
Hi,
ReplyI don't have any experience in it but I'll let you know if I could it properly(I have your email)
Thank you
It is not working for me
ReplyWorks Perfectly. Thanks!!!
ReplyPost a Comment
Note: Only a member of this blog may post a comment.