2014-03-24 47 views
1

我對Winforms和GDI +完全陌生,我來自WPF背景。使用下面的簡單代碼來繪製1000行,我注意到它並不像WPF那樣一次繪製線條。這是緩慢的,繪畫的過程實際上是顯而易見的。我在下面的代碼中丟失了什麼?在GDI中慢速繪製線條+

private void button1_Click(object sender, EventArgs e) 
{ 
    Graphics g; 
    g = CreateGraphics(); 

    var pn = new Pen(Color.Wheat, 1); 
    var x = 0; 
    var y = 0; 
    var n = 0; 

    while (n < 1000) 
    { 
     x = x + 5; 
     if (x > 1200) 
     { 
      x = 0; 
      y = y + 15; 
     } 
     g.DrawLine(pn, x, y, x, y + 10); 

     n++; 
    } 
} 
+0

覆蓋了的onDraw方法,這個方法裏面可以recieive畫布上,並繪製到它,只用一個手柄,據我所知。所以你的按鈕可以設置像計數器或標誌的東西,並調用無效,並在onDraw事件處理程序,然後你可以快速繪製。 – icbytes

+1

我已經在WPF和WinForms中完成了一個簡單的測試,在WPF中需要36ms來生成上面的代碼,而在WinForms中只有10個,所以在某些時候您的端點出現了問題。 – woutervs

+0

你用GDI +中的確切代碼做了嗎?我實際上正在看到畫線。 – Vahid

回答

1

我創建了一個小的解決方案比較繪製速度,你可以自己嘗試一下自己的機器上。

Link to solution

+1

編輯到解決方案:添加按鈕。 – woutervs

+0

非常感謝你woutervs。這實際上比WPF快,我想知道爲什麼這比我上面寫的代碼更快?也許這是因爲'pictureBox1.Image = bitmap;'我直接在表單上畫圖。 – Vahid

+0

看看我真的需要重新考慮我選擇的WPF的速度。我想我應該在Winform中執行該程序。 – Vahid