Ok, hier ist Code, der ein einfaches Chart zeichnet
Dim points(5) As PointF
Dim xs As Single = 5
Dim ys As Single = 10
Dim xscale As Single = 10
Dim yscale As Single = 5
Private Sub drawGraph(ByVal g As Graphics)
Dim pen1 As New Pen(Color.Black)
Dim pen2 As New Pen(Color.Red)
g.DrawLine(pen1, 0, 0, 0, ys * yscale)
g.DrawLine(pen1, 0, ys * yscale, xs * xscale, ys * yscale)
Dim points1(points.Length - 1) As PointF
For i As Integer = 0 To points.Length - 1
points1(i) = New PointF(points(i).X * xscale, ys * yscale - points( _
i).Y)
Next
g.DrawLines(pen2, points1)
End Sub
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
drawGraph(e.Graphics)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
points(0) = New PointF(1, 10)
points(1) = New PointF(2, 35)
points(2) = New PointF(3, 45)
points(3) = New PointF(4, 38.5)
points(4) = New PointF(5, 29.2)
points(5) = New PointF(6, 17)
End Sub Jedesmal wenn PictureBox1 neu gezeichnet werden muss (z.B. die Form war minimiert und wird jetzt wieder angezeigt) wird die ganze Graphic wieder gezeichnet. Du kannst die Graphic auch als Bitmap haben, und nur dieses Bitmap zeichnen:
Dim points(5) As PointF
Dim xs As Single = 5
Dim ys As Single = 10
Dim xscale As Single = 10
Dim yscale As Single = 5
Private Sub drawGraph(ByVal g As Graphics)
Dim pen1 As New Pen(Color.Black)
Dim pen2 As New Pen(Color.Red)
g.DrawLine(pen1, 0, 0, 0, ys * yscale)
g.DrawLine(pen1, 0, ys * yscale, xs * xscale, ys * yscale)
Dim points1(points.Length - 1) As PointF
For i As Integer = 0 To points.Length - 1
points1(i) = New PointF(points(i).X * xscale, ys * yscale - points( _
i).Y)
Next
g.DrawLines(pen2, points1)
End Sub
Dim bm As Bitmap
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As _
System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.DrawImage(bm, New Point(0, 0))
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
points(0) = New PointF(1, 10)
points(1) = New PointF(2, 35)
points(2) = New PointF(3, 45)
points(3) = New PointF(4, 38.5)
points(4) = New PointF(5, 29.2)
points(5) = New PointF(6, 17)
' Graphic einmal zeichnen
bm = New Bitmap(PictureBox1.ClientRectangle.Width, _
PictureBox1.ClientRectangle.Height)
Dim g As Graphics = Graphics.FromImage(bm)
drawGraph(g)
End Sub In diesem Fall alles was gezeichnet wird bleibt im Bitmap erhalten, wenn eine neue Zeile hinzukommt z.B.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist |