Анимация простых фигур - Visual Basic .NET

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

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

как сделать вот такое на вб нет ?) https://www.youtube.com/watch?v=sGXIsXtpN0k

Решение задачи: «Анимация простых фигур»

textual
Листинг программы
  1. Public Class Form1
  2.  
  3.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  4.         Dim mex As New Mexanizm(PictureBox1)
  5.         mex.Animate()
  6.     End Sub
  7. End Class
  8.  
  9.  
  10.  
  11. Public Class Mexanizm
  12.     Private bg As Drawing.BufferedGraphics
  13.     Private bgc As Drawing.BufferedGraphicsContext
  14.     Private cntrl As Control
  15.     Private g As Graphics
  16.     Private AB, BC, CD, DB, CE As Single
  17.     Private Ax, AY, Bx, By, Cx, Cy, Dx, Dy, Ey, Ex As Single
  18.     Private angleAB, angleDB, angleBC, angleCE As Double
  19.     Const angle90 As Double = (90.0R * Math.PI) / 180.0R
  20.  
  21.     Sub New([Control] As Control)
  22.         cntrl = [Control]
  23.         Ax = 100
  24.         AY = 200
  25.         AB = 30
  26.         BC = 100
  27.         CD = 90
  28.         CE = 65
  29.  
  30.         Dx = Ax + 65
  31.         Dy = AY - 100
  32.  
  33.         angleAB = (135.0R * Math.PI) / 180
  34.  
  35.         bgc = Drawing.BufferedGraphicsManager.Current
  36.         bgc.MaximumBuffer = New Size([Control].Size.Width + 1, [Control].Size.Height + 1)
  37.         bg = bgc.Allocate([Control].CreateGraphics, New Rectangle(0, 0, [Control].Size.Width, [Control].Size.Height))
  38.     End Sub
  39.  
  40.     Private Sub Calculate()
  41.         Bx = Math.Cos(angleAB) * AB + Ax
  42.         By = Math.Sin(angleAB) * AB * -1 + AY
  43.  
  44.         DB = Math.Sqrt((Dx - Bx) ^ 2 + (Dy - By) ^ 2)
  45.  
  46.         angleDB = Math.Acos((DB ^ 2 + (Dx - Bx) ^ 2 - (Dy - By) ^ 2) / (2 * DB * (Dx - Bx)))
  47.  
  48.         angleBC = Math.Acos((BC ^ 2 + DB ^ 2 - CD ^ 2) / (2 * BC * DB)) + angleDB
  49.  
  50.         Cx = Math.Cos(angleBC) * BC + Bx
  51.         Cy = Math.Sin(angleBC) * BC * -1 + By
  52.  
  53.         angleCE = Math.Acos((Dy - Cy) / CD)
  54.  
  55.         Ex = Math.Cos(angleCE) * CE + Cx
  56.         Ey = Math.Sin(angleCE) * CE * -1 + Cy
  57.     End Sub
  58.  
  59.     Public Sub Animate()
  60.         Dim r As Integer
  61.  
  62.         Do
  63.             angleAB += 0.01R
  64.             If angleAB >= Math.PI Then angleAB = -Math.PI : r += 1
  65.             Me.Calculate()
  66.             bg.Graphics.Clear(Color.White)
  67.             bg.Graphics.DrawEllipse(Pens.Black, Ax - AB, AY - AB, AB * 2, AB * 2)
  68.             bg.Graphics.DrawLine(Pens.Black, Ax, AY, Bx, By)
  69.             bg.Graphics.DrawLine(Pens.Black, Bx, By, Cx, Cy)
  70.             bg.Graphics.DrawLine(Pens.Black, Cx, Cy, Dx, Dy)
  71.             bg.Graphics.DrawLine(Pens.Black, Cx, Cy, Ex, Ey)
  72.             bg.Render(Graphics.FromHwnd(cntrl.Handle))
  73.             My.Application.DoEvents()
  74.             Threading.Thread.Sleep(10)
  75.         Loop While (r < 5)
  76.  
  77.  
  78.     End Sub
  79.  
  80.  
  81. End Class

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


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

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

9   голосов , оценка 3.444 из 5

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

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

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