Трусов M. А. Visual Basic .NЕТ Практическое руководство для начинающего программиста стр.73
Трусов M. А. Visual Basic .NЕТ Практическое руководство для начинающего программиста стр.73

В следующем примере создадим четырехугольник и плавно переместим его с одного места в другое:

Private Sub FormlJPaint (ByVal sender As Object, _ ByVal e As System.Windows.Forms.PaintEventArgs)__ Handles MyBase.Paint

Static a As Integer = 20 a = a + 1

e.Graphics.FillRectangle (New SolidBrush _ (Color.Red), a, 10, 100, 70) End Sub

Private Sub TimerlJTick(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Timerl.Tick Me. Refresh () End Sub

Private Sub Buttonl_Click (ByVal sender As _ System.Object, ByVal e As System.EventArgs) _ Handles Buttonl.Click

Timerl.Start () End Sub

В данном коде горизонтальная координата четырехугольника имеет значение статической переменной а. Изменение значения данной переменной происходит путем так называемой перерисовки. Старое изображение при этом уничтожается, а новое создается в соответствии с заданными координатами. За эту работу отвечает метод Refresh. В коде Refresh активизируется таймером Timerl, который в свою очередь

Трусов M. А. Visual Basic .NЕТ Практическое руководство для начинающего программиста

Вращающаяся линия

запускается кнопкой Butt on 1, а останавливается кнопкой But-ton2. Теперь изменим ширину и высоту прямоугольника:

Private Sub Forml_Paint(ByVal sender As Object, By _ Val e As Sys_tem.Windows.Forms.PaintEventArgs) _ Handles MyBase.Paint

Static b As Integer = 100

Static с As Integer = 100

b = b + 1

с = с + 1

e.Graphics.DrawRectangle (New Pen _ (Color.Black, 5), 10, 150, b, c) End Sub

Private Sub Timerl_Tick (ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles _ Timerl.Tick

Me. Refresh ()

End Sub

Private Sub Buttonl_Click (ByVal sender As _ System.Object, ByVal e As System.EventArgs) Handles,. Buttonl.Click

Timerl.Start() End Sub

Перерисовку можно производить также методом Invalidate, что мы и сделаем в следующем примере. Изображение на форме может изменяться вместе с изменением размеров формы. Чтобы этого не случилось, используйте процедуру обработки события FormJResize и метод Invalidate:

Private Sub Forml_Resize (ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Resize Me.Invalidate() End Sub


⇐ Предыдущая Следующая ⇒
 
 
 
Powered by Exponenta