我遇到了有關GDI +的效率問題。 有幾個變量和方法 如下: 1.Points,如A(表示一個座標點,如XYZ),B,C,d,E等更新移動鼠標
命名CMD12列表,使用通過線程來添加點
3.Paint方法,在該方法中,該組連接到線路
4.Thread爲常數增加新的點,如F,G,H,I點的,J等
在畫圖方法中,我使用g.DrawLine()來鏈接和b,C,d,E。 在線程,當我加點,我會打電話無效刷新組件。 所以我的問題是,點越來越多,我怎麼能保持高效率,並重繪,
不要從一個點做起,把重 - DrawLine的。
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添加A,B,C,d,E點,並使用無效的方法來刷新,當我打電話無效,則「對於Cmd1中的每一個Cmd1」,每一個都將從A點開始,所以當點越來越多時,我該如何保持高效率,並重繪,不要從A點開始重劃線
你可以展示一些細節或演示,我可以知道更多。 – xuyunhai
非常感謝,我會仔細閱讀。 – xuyunhai
我發現一個問題: 你認爲效率的提高是由於使用位圖,但我認爲效率的提高取決於新的點重繪,而不是所有的點。換句話說,我認爲,即使你不使用BITMAP,只要重新繪製新添加的點的唯一方法,是否可以提高效率 – xuyunhai