Indicating Infinite Progress, or lack thereof


clovett href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=d2bd8858-97c7-4a77-96eb-5d86d3b022d4"> face="Trebuchet MS" color=teal>posted this sample face="Trebuchet MS" color=teal> of a progress bar that does not
progress
to GDN at some point in the past and I had occasion to use it
today. Using irrational coder logic, I decided that converting it to VB, so I
could place it directly in my application, was faster than modifying his sample
into a component…



src="http://www.duncanmackenzie.net/splash.jpg" align=baseline
border=0>


Anyway, explanations aside; here is the
code in VB



Imports System
Imports System.Drawing
Imports System.Drawing.Drawing2D

Public Class InfiniteProgress
Inherits System.Windows.Forms.Control
Dim WithEvents tmr As Timer
Dim m_Color1 As Color = Color.White
Dim m_Color2 As Color = Color.Blue
Dim m_Increment As Integer = 5

<ComponentModel.Category(“Appearance”)> _
Public Property Color1() As Color
Get
Return
m_Color1
End Get
Set
(ByVal Value As Color)
m_Color1 = Value
End Set
End Property

<ComponentModel.Category(“Appearance”)> _
Public Property Color2() As Color
Get
Return
m_Color2
End Get
Set
(ByVal Value As Color)
m_Color2 = Value
End Set
End Property

<ComponentModel.Category(“Appearance”)> _
Public Property Increment() As Integer
Get
Return
m_Increment
End Get
Set
(ByVal Value As Integer)
m_Increment = Value
End Set
End Property

Dim Position As Single = 0

Public Sub New()
Me.SetStyle(ControlStyles.DoubleBuffer, True)

End Sub

Protected Overrides Sub OnPaint( _
ByVal e As System.Windows.Forms.PaintEventArgs)
Dim b As New LinearGradientBrush( _
Me.Bounds, Me.Color1, Me.Color2, _
LinearGradientMode.Horizontal)
b.WrapMode = Drawing.Drawing2D.WrapMode.TileFlipX
b.TranslateTransform(Position, 0, MatrixOrder.Append)
e.Graphics.FillRectangle(b, 0, 0,
Me.Width, Me.Height)
b.Dispose()
MyBase.OnPaint(e)
End Sub

Private Sub tmr_Tick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles tmr.Tick
Position += m_Increment
If Position > Me.Width Then
Position = –Me.Width
End If
Me
.Invalidate()
End Sub

Protected Overrides Sub _
OnVisibleChanged(
ByVal e As System.EventArgs)
If Me.Visible Then
If
tmr Is Nothing Then
tmr = New Timer()
tmr.Interval = 20
End If
tmr.Start()
Else
If Not
tmr Is Nothing Then
tmr.Stop()
End If
End If
MyBase
.OnVisibleChanged(e)
End Sub
End Class


Comments (1)

  1. You should make sure that you rate clovett’s sample or leave a comment 🙂

    That’s my new crusade ever since I posted my first sample there. It’s always good to get feedback.