Private Const m_StepMax As Integer = 100 Private Const m_StepWidthMax As Integer = 200 Private m_Step As Integer Private m_StepWidth As Integer Private m_Count As Integer Private m_Revers As Boolean Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click With Me.Timer1 .Enabled = Not .Enabled End With End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim green As Integer = m_Step * m_Count Dim Brush As SolidBrush Dim g As Graphics = Me.CreateGraphics If green > 255 Then green = 255 If green < 0 Then green = 0 Brush = New SolidBrush(Color.FromArgb(255, green, 0)) Me.Refresh() g.FillEllipse(Brush, CInt(100 + (m_StepWidth / 2) * (m_StepMax - m_Count)), 100, m_StepWidth * (m_Count - 1), 200) Brush.Dispose() g.Dispose() If m_Revers Then m_Count -= 1 Else m_Count += 1 End If If m_Count > m_StepMax OrElse m_Count < 0 Then m_Revers = Not m_Revers End Sub Private Sub Kurukuru_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load m_Step = CInt(255 / m_StepMax) m_StepWidth = CInt(m_StepWidthMax / m_StepMax) End Sub