關於WriteableBitmap有一個簡單的MSDN example。Wpf:爲什麼WriteableBitmap變慢?
它顯示瞭如何通過在按下鼠標並且正在移動WPF -Image Control時更新一個像素來使用鼠標畫一條手繪線。
writeableBitmap.Lock();
(...set the writeableBitmap.BackBuffers pixel value...)
writeableBitmap.AddDirtyRect(new Int32Rect(column, row, 1, 1));
writeableBitmap.Unlock();
現在我想了解以下行爲移動鼠標指針時,速度非常快:
如果圖像/位圖的尺寸相對較小例如800:600像素,則最後繪製的像素總是與鼠標指針位置「同步」,即沒有延遲,對鼠標移動的反應非常快。
但是,如果位圖變大,例如1300:1050像素,您可以注意到延遲,最後繪製的像素總是顯示在移動的鼠標指針後面一點點延遲。
因此,在這兩種情況下只有一個像素被更新爲「AddDirtyRect
」,反應速度應該獨立於位圖大小!但看起來Writeablebitmap在尺寸變大時變慢。
或者整個位圖以某種方式在調用每個writeableBitmap.Unlock();
調用時都轉移到圖形設備,而不僅僅是AddDirtyRect
方法中指定的矩形區域?
弗裏茨
但是我看到那個線程中的某個人仍在使用perf probs,所以有人真正確認它是固定的嗎? – 2011-02-01 20:42:13
截至目前看來,WriteableBitmap仍然存在性能問題。我使用像fritz這樣的AddDirtyRect來只改變需要改變的像素,但是圖像越大,它越慢。順便說一下,我正在使用.NET 4.6:/。 – 2016-03-08 15:13:20