Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2016, 15:28   #1
nrei2nfiuo2nfuoi2n
Новичок
Джуниор
 
Регистрация: 26.05.2016
Сообщений: 1
Восклицание Анимация простых фигур vb net

Как на vb net нарисовать то что показано на изображении ? ниже ко похожей программы , помогите плиз , очень нужно .зарание благодарен
Код:
Public Class Form1
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim mex As New Mexanizm(PictureBox1)
        mex.Animate()
    End Sub
End Class
 
 
 
Public Class Mexanizm
    Private bg As Drawing.BufferedGraphics
    Private bgc As Drawing.BufferedGraphicsContext
    Private cntrl As Control
    Private g As Graphics
    Private AB, BC, CD, DB, CE As Single
    Private Ax, AY, Bx, By, Cx, Cy, Dx, Dy, Ey, Ex As Single
    Private angleAB, angleDB, angleBC, angleCE As Double
    Const angle90 As Double = (90.0R * Math.PI) / 180.0R
 
    Sub New([Control] As Control)
        cntrl = [Control]
        Ax = 100
        AY = 200
        AB = 30
        BC = 100
        CD = 90
        CE = 65
 
        Dx = Ax + 65
        Dy = AY - 100
 
        angleAB = (135.0R * Math.PI) / 180
 
        bgc = Drawing.BufferedGraphicsManager.Current
        bgc.MaximumBuffer = New Size([Control].Size.Width + 1, [Control].Size.Height + 1)
        bg = bgc.Allocate([Control].CreateGraphics, New Rectangle(0, 0, [Control].Size.Width, [Control].Size.Height))
    End Sub
 
    Private Sub Calculate()
        Bx = Math.Cos(angleAB) * AB + Ax
        By = Math.Sin(angleAB) * AB * -1 + AY
 
        DB = Math.Sqrt((Dx - Bx) ^ 2 + (Dy - By) ^ 2)
 
        angleDB = Math.Acos((DB ^ 2 + (Dx - Bx) ^ 2 - (Dy - By) ^ 2) / (2 * DB * (Dx - Bx)))
 
        angleBC = Math.Acos((BC ^ 2 + DB ^ 2 - CD ^ 2) / (2 * BC * DB)) + angleDB
 
        Cx = Math.Cos(angleBC) * BC + Bx
        Cy = Math.Sin(angleBC) * BC * -1 + By
 
        angleCE = Math.Acos((Dy - Cy) / CD)
 
        Ex = Math.Cos(angleCE) * CE + Cx
        Ey = Math.Sin(angleCE) * CE * -1 + Cy
    End Sub
 
    Public Sub Animate()
        Dim r As Integer
 
        Do
            angleAB += 0.01R
            If angleAB >= Math.PI Then angleAB = -Math.PI : r += 1
            Me.Calculate()
            bg.Graphics.Clear(Color.White)
            bg.Graphics.DrawEllipse(Pens.Black, Ax - AB, AY - AB, AB * 2, AB * 2)
            bg.Graphics.DrawLine(Pens.Black, Ax, AY, Bx, By)
            bg.Graphics.DrawLine(Pens.Black, Bx, By, Cx, Cy)
            bg.Graphics.DrawLine(Pens.Black, Cx, Cy, Dx, Dy)
            bg.Graphics.DrawLine(Pens.Black, Cx, Cy, Ex, Ey)
            bg.Render(Graphics.FromHwnd(cntrl.Handle))
            My.Application.DoEvents()
            Threading.Thread.Sleep(10)
        Loop While (r < 5)
 
 
    End Sub
 
 
End Class
Изображения
Тип файла: jpg cхема.jpg (67.7 Кб, 138 просмотров)
nrei2nfiuo2nfuoi2n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PascalABC.NET - Рассмотреть класс геометрических фигур, квадрат, круг, треугольник Niv Помощь студентам 34 21.06.2015 16:33
PascalABC.NET - Рассмотреть класс геометрических фигур, квадрат, круг, треугольник Niv Паскаль, Turbo Pascal, PascalABC.NET 0 18.06.2015 14:12
Рисование простых фигур DimaTs C# (си шарп) 2 27.11.2011 20:08
Программа для поиска простых, простых парных и взаимнопростых чисел in da fly Помощь студентам 1 26.05.2011 23:30