У меня возник вопрос об эффективности GDI +. Есть несколько переменных и методов , как показано ниже: 1.Points, такие как A (Представляет точку координат, например, XYZ), B, C, D, E и т.д.update move mouse
2 Список имени CMD1, используемого для добавления точек с помощью резьбы
метода 3.Paint, в этом методе, множество точек, подключенных к линии
4.Thread для постоянного добавления новых точек, таких как F, G, H, I , J и т. Д.
В методе Paint я использую g.DrawLine() для ссылки a и b, c, d, e. В потоке, когда я добавляю новые точки, я вызову invalid для обновления компонента. , так что мой вопрос, точки становятся все больше и больше, как я могу поддерживать высокую эффективность и перерисовывать,
не начинайте с точки на повторную линию.
Sub DrawGLines2(g As Graphics)
g.SmoothingMode = SmoothingMode.HighSpeed
Dim Pen As New Pen(Brushes.White)
Dim i As Int32
'Dim c As Int32
Dim preCmd1 As Cmd1
Try
For Each cmd As Cmd1 In Cmd1s
Dim pfs() As PointF = cmd.PointFs.ToArray
If preCmd1 IsNot Nothing Then
g.DrawLine(Pen, cmd.PointFs(0), preCmd1.PointFs(0))
End If
preCmd1 = cmd
End If
Next
Catch ex As Exception
Debug.Print(ex.Message)
End Try
End Sub
Private Sub Sheet_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
If Me.Cmd1s.Count>0 Then
DrawGLines2(e.Graphics)
End If
End Sub
Public Sub AddPoint(x As Double, y As Double, z As Double, Optional G As Int32 = -1)
Dim cmd1 As DrvSimu.Cmd1 = Nothing
If cmd1 Is Nothing Then
cmd1 = New DrvSimu.Cmd1
Me.Cmd1s.Add(cmd1)
End If
Dim pf3d As New PointF3D(x, y, z)
cmd1.PointF3Ds.Add(pf3d)
Me.Invalidate()
End Sub
нить будет вызывать AddPoint добавить, B, C, D, E точек, и использовать недопустимый метод для обновления, когда я назвать недействительным, «Для каждого cmd As Cmd1 In Cmd1s» для каждого из них начинается с точки A, поэтому, когда точки становятся все больше и больше, как я могу поддерживать высокую эффективность и перерисовывать, не начинайте с точки A до повторного рисования
Вы можете показать некоторые подробности или демонстрацию, чтобы узнать больше. – xuyunhai
Большое спасибо, я прочитаю внимательно. – xuyunhai
Я нашел проблему: Вы считаете, что повышение эффективности связано с использованием растрового изображения, но я думаю, что повышение эффективности зависит от новой перерисовки точек, а не из всех точек. Другими словами, я думаю, что даже если вы этого не сделаете используйте BITMAP, пока единственный способ перерисовать недавно добавленную точку, может ли она повысить эффективность. – xuyunhai