这里有一个关于WriteableBitmap的简单MSDN示例。
它展示了如何通过在WPF-图像控件上更新一个像素来使用光标绘制自由手线条,当鼠标被按下并在移动时。
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
方法中指定的矩形区域?
fritz