16,722
社区成员




Public Class MovePhoto
Private Tick As Integer = 0
Private Const m_XValue As Integer = 12
Private m_XQueue, m_YQueue As Queue
Private Array As Array
Private m_Value As Integer
Public Property Value() As Integer
Get
Return m_Value
End Get
Set(ByVal value As Integer)
Dim BaseY As Integer = Me.Height - (Me.Height Mod m_XValue)
m_Value = BaseY - value
End Set
End Property
Private Sub DrawLineV(ByVal Graphics As Graphics)
Dim Pen As New Pen(Color.Green)
For i As Integer = 0 To Me.Height Step m_XValue
Graphics.DrawLine(Pen, 0, i, Me.Width, i)
Next
Pen.Dispose()
End Sub
Private Sub DrawLineH(ByVal Graphics As Graphics)
Dim Pen As New Pen(Color.Green)
For i As Integer = 0 To Me.Width + Tick Step m_XValue
Graphics.DrawLine(Pen, i - Tick, 0, i - Tick, Me.Height)
Next
Pen.Dispose()
End Sub
Private Sub DrawLineValue(ByVal Graphics As Graphics)
Dim Pen As New Pen(Color.LightGreen)
For i As Integer = 1 To m_YQueue.Count - 1
Graphics.DrawLine(Pen, Array(i - 1), m_YQueue.ToArray(i - 1), Array(i), m_YQueue.ToArray(i))
Next
Pen.Dispose()
End Sub
Private Sub MovePhoto_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
DrawLineV(e.Graphics)
DrawLineH(e.Graphics)
DrawLineValue(e.Graphics)
End Sub
Public Sub DrawMovephoto()
m_YQueue.Enqueue(Value)
If m_XQueue.Count > Me.Width / 2 Then
m_YQueue.Dequeue()
Else
m_XQueue.Enqueue(Me.Width - Tick - 1)
End If
Array = m_XQueue.ToArray
Array.Reverse(Array)
Tick += 2
Me.Invalidate()
End Sub
Public Sub New()
' 此调用是 Windows 窗体设计器所必需的。
InitializeComponent()
m_XQueue = New Queue
m_YQueue = New Queue
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
End Class
Private Sub Timer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer.Tick
MP.Value = 50 * Rnd()
MP.DrawMovephoto()
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Timer.Enabled = True
End Sub