Существует простой пример MSDN о WriteableBitmap.
Показывает, как нарисовать линию курсора от руки, просто обновив один пиксель, когда мышь нажата и перемещается над элементом управления изображением 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
?
Фриц