WriteableBitmap에 대해 간단한 MSDN example이 있습니다.Wpf : 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
메서드에서 정의 된 사각형 영역이 아닌?
프리츠
는하지만 그렇게 사람이 진정으로이 고정되어 확인했습니다, 그 스레드에서 누군가가 여전히 반환 한 probs가 발생 된 것을 볼? –
현재로서는 WriteableBitmap에 여전히 성능 문제가 있습니다. 나는 프리츠와 같이 AddDirtyRect를 사용하여 변경이 필요한 픽셀 만 변경하지만 이미지가 클수록 더 느리게 만듭니다. 나는 .NET 4.6을 사용하고 있습니다 : /. –