Движение точки на 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

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы