Движение точки на PIcture - VB

Узнай цену своей работы

Формулировка задачи:

День добрый. Задача: на Picture сгенерировать 10000 точек. затем по траектории, выраженной функцией, провести новую точку. и в радиусе 20 точек от этой новой закрашивать ранее сгенерированные точки. Код:
Листинг программы
  1. Dim x(1 To 10000) As Integer, y(1 To 10000) As Integer
  2. Dim i As Long, j As Long
  3. Private Sub Command1_Click()
  4. For i = 1 To 10000
  5. x(i) = Rnd * Picture1.ScaleWidth
  6. y(i) = Rnd * Picture1.ScaleHeight
  7. Picture1.PSet (x(i), y(i)), vbWhite
  8. Next i
  9. i = 0
  10. Timer1.Enabled = True
  11. End Sub
  12. Private Sub Timer1_Timer()
  13. Dim polet(0 To 10000) As Single
  14. If i <= Picture1.ScaleWidth Then
  15. polet(i) = 2 * Sin(i / 2) + (1 / 2) * Cos(2 * i)
  16. Picture1.Circle (i, polet(i) + 150), 1, vbWhite
  17. If i > 1 Then Picture1.Circle (i - 1, polet(i - 1)), 1, vbBlack
  18. For j = 0 To 20
  19. Picture1.PSet (i, polet(i) + 150), vbBlack
  20. Picture1.PSet (i, polet(i) + j + 150), vbBlack
  21. Picture1.PSet (i, polet(i) - j + 150), vbBlack
  22. Next j
  23. i = i + 1
  24. Else
  25. Timer1.Enabled = False
  26. End If
  27. End Sub
ScaleWidth=300 ScaleHeight=300 Но у меня возникло две проблемы: 1. Как закрасить предыдущую позицию точки? 2. Как удалить точки перед движением новой? т.е. удалять перед самым носом получается, но как сделать, что б на указанные 20 точек вперед тоже очищалось? И еще вопросик: как сделать закрашенный круг? но это пока так, влом лезть в справку. на него можно и не отвечть

Решение задачи: «Движение точки на PIcture»

textual
Листинг программы
  1. Dim x(1 To 10000) As Integer, y(1 To 10000) As Integer
  2. Dim i As Long, j As Long
  3. Dim polet(0 To 10000) As Single
  4.  
  5. Private Sub Command1_Click()
  6.    
  7.     Picture1.AutoRedraw = True
  8.     For i = 1 To 10000
  9.         x(i) = Rnd * Picture1.ScaleWidth
  10.         y(i) = Rnd * Picture1.ScaleHeight
  11.         Picture1.PSet (x(i), y(i)), vbWhite
  12.     Next i
  13.    
  14.     i = 0
  15.     Timer1.Enabled = True
  16.  
  17. End Sub
  18.  
  19. Private Sub Form_Load()
  20.     Dim buf As PictureBox
  21.    
  22.     Set buf = Me.Controls.Add("VB.PictureBox", "img")
  23.     buf.AutoRedraw = True
  24.     buf.ScaleMode = vbPixels
  25.     buf.BorderStyle = 0
  26.     buf.Move 0, 0, ScaleX(40, vbPixels, ScaleMode), ScaleX(40, vbPixels, ScaleMode)
  27. End Sub
  28.  
  29. Private Sub Timer1_Timer()
  30.     Static ox As Single, oy As Single
  31.     Dim x As Single, y As Single, dx As Single, _
  32.         dy As Single, px As Single, py As Single, _
  33.         sx As Single, sy As Single, buf As PictureBox
  34.    
  35.     sx = Picture1.ScaleX(1, vbPixels, vbUser)
  36.     sy = Picture1.ScaleY(1, vbPixels, vbUser)
  37.     Set buf = Me.Controls("img")
  38.    
  39.     If i <= Picture1.ScaleWidth Then
  40.        
  41.         x = i
  42.         y = 20 * Sin(i / 2) + 0.5 * Cos(2 * i) + 150
  43.        
  44.         px = Picture1.ScaleX(x, vbUser, vbPixels): py = Picture1.ScaleY(y, vbUser, vbPixels)
  45.        
  46.         If i Then Picture1.PaintPicture buf.Image, ox - sx * 20, oy - sy * 20, sx * 40, sy * 40, 0, 0, sx * 40, sy * 40
  47.         buf.PaintPicture Picture1.Image, 0, 0, 40, 40, px - 20, py - 20, 40, 40
  48.  
  49.         Picture1.FillStyle = vbSolid
  50.         Picture1.Circle (x, y), sx * 18, vbBlack
  51.         Picture1.FillStyle = vbTransparent
  52.         Picture1.Circle (x, y), 2, vbWhite
  53.        
  54.         oy = y: ox = x
  55.         i = i + 1
  56.     Else
  57.         Timer1.Enabled = False
  58.         Form1.Caption = "Óñ¸"
  59.     End If
  60. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы