У меня есть интересная задача создания некоторых графиков с использованием VB.NET. Пока что все, что я читал о GDI + и электронной графике, все, что действительно странно. Все, что я хочу сделать, это
1) Рассчитать некоторые координаты нажатием кнопки 1
2) Нажмите кнопку 2, чтобы нарисовать линию с числами из кнопки 1
3) Нажмите кнопку 1, чтобы получить новые координаты
4) нажмите кнопку 2, чтобы нарисовать предыдущую линию и новую линию.
5) нажмите кнопку 3, чтобы очистить график.
Поэтому я решил нарисовать что-нибудь поверх панели, называемое panel1. У меня есть рутина, которая рисует на экране, называется drawlines,
Private Sub drawlines(ByVal g As Graphics, ByVal c As Color)
Dim p As New Pen(c, 1)
g.DrawLine(p, xStart, yStart, xEnd, yEnd)
p.Dispose()
End Sub
и другие подпрограммы:
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
'AddHandler Panel1.Paint, AddressOf DrawLine
GraphicsHandler = Panel1.CreateGraphics
End Sub
Private Sub drawlines(ByVal g As Graphics, ByVal c As Color)
Dim p As New Pen(c, 1)
g.DrawLine(p, xStart, yStart, xEnd, yEnd)
p.Dispose()
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'GraphicsHandler = Panel1.CreateGraphics
GraphicsHandler.DrawLine(myPen, 10, 10, 200, 100)
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
xStart = CInt(Math.Ceiling(Rnd() * 200))
yStart = CInt(Math.Ceiling(Rnd() * 100))
xEnd = CInt(Math.Ceiling(Rnd() * 200))
yEnd = CInt(Math.Ceiling(Rnd() * 100))
Me.Panel1.Invalidate()
End Sub
Private Sub Panel1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles Panel1.Paint
drawlines(e.Graphics, Color.Blue)
End Sub
Private Sub Button3_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button3.Click
GraphicsHandler.Clear(Color.White)
End Sub
Пока что работает только с использованием GraphicsHandler, но каждый раз, когда я пытаюсь свернуть окно или нарисовать новую линию, предыдущие линии стираются. Может ли какая-то добрая душа объяснить мне правильный способ сделать простое 1-5 выше? Например, как я могу вызвать drawlines () с кнопки?