Движение точки на PIcture - VB
Формулировка задачи:
День добрый.
Задача:
на Picture сгенерировать 10000 точек.
затем по траектории, выраженной функцией, провести новую точку. и в радиусе 20 точек от этой новой закрашивать ранее сгенерированные точки.
Код:
ScaleWidth=300
ScaleHeight=300
Но у меня возникло две проблемы:
1. Как закрасить предыдущую позицию точки?
2. Как удалить точки перед движением новой? т.е. удалять перед самым носом получается, но как сделать, что б на указанные 20 точек вперед тоже очищалось?
И еще вопросик: как сделать закрашенный круг? но это пока так, влом лезть в справку. на него можно и не отвечть
Решение задачи: «Движение точки на PIcture»
textual
Листинг программы
Dim x(1 To 10000) As Integer, y(1 To 10000) As Integer Dim i As Long, j As Long Dim polet(0 To 10000) As Single Private Sub Command1_Click() Picture1.AutoRedraw = True For i = 1 To 10000 x(i) = Rnd * Picture1.ScaleWidth y(i) = Rnd * Picture1.ScaleHeight Picture1.PSet (x(i), y(i)), vbWhite Next i i = 0 Timer1.Enabled = True End Sub Private Sub Form_Load() Dim buf As PictureBox Set buf = Me.Controls.Add("VB.PictureBox", "img") buf.AutoRedraw = True buf.ScaleMode = vbPixels buf.BorderStyle = 0 buf.Move 0, 0, ScaleX(40, vbPixels, ScaleMode), ScaleX(40, vbPixels, ScaleMode) End Sub Private Sub Timer1_Timer() Static ox As Single, oy As Single Dim x As Single, y As Single, dx As Single, _ dy As Single, px As Single, py As Single, _ sx As Single, sy As Single, buf As PictureBox sx = Picture1.ScaleX(1, vbPixels, vbUser) sy = Picture1.ScaleY(1, vbPixels, vbUser) Set buf = Me.Controls("img") If i <= Picture1.ScaleWidth Then x = i y = 20 * Sin(i / 2) + 0.5 * Cos(2 * i) + 150 px = Picture1.ScaleX(x, vbUser, vbPixels): py = Picture1.ScaleY(y, vbUser, vbPixels) If i Then Picture1.PaintPicture buf.Image, ox - sx * 20, oy - sy * 20, sx * 40, sy * 40, 0, 0, sx * 40, sy * 40 buf.PaintPicture Picture1.Image, 0, 0, 40, 40, px - 20, py - 20, 40, 40 Picture1.FillStyle = vbSolid Picture1.Circle (x, y), sx * 18, vbBlack Picture1.FillStyle = vbTransparent Picture1.Circle (x, y), 2, vbWhite oy = y: ox = x i = i + 1 Else Timer1.Enabled = False Form1.Caption = "Óñ¸" End If End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д