아이디어는로드 된 이미지를 처리하는 것입니다. 나는 먼저 이미지를 처리하는 흰색/검은 선이 있다는 식으로 처리하려고했습니다. 실제 문제는 새로운 Thread (Thread.Sleep 용)가 처리하는 동안 전체 UI를 고정 시킨다는 것입니다. Dispatcher를 시도 할 때 이미지가 업데이트되지 않습니다.MVVM Writeablebitmap 이미지 처리
public WriteableBitmap GetProcessedPicture(int i)
{
WriteableBitmap wb = image.image;
Process(ref wb, i);
return wb;
}
private void Process(ref WriteableBitmap wb, int j)
{
int stride = wb.PixelWidth * (wb.Format.BitsPerPixel + 7)/8;
byte[] data = new byte[stride * wb.PixelHeight];
for (int i = 0; i < data.Length; i++) data[i] = 255;
//just to see some changes
wb.WritePixels(new Int32Rect(j, 0, 100, 100), data, stride, 0);
}
와 함께 MainViewModel 클래스 (내가 MVVM 빛을 사용하고 있습니다) : 도움을
public void Start_Click()
{
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
for (int i = 0; i < 100; i++)
{
ImageSource = processingClass.GetProcessedPicture(i);
Thread.Sleep(100);
}
}));
};
감사
그래서 나는 ProcessingClass을 얻었다.
예,'ImageSource'는 Image.Source이지만, WriteableBitmap' 아무 문제 때이없는 '받아 그것을 초기화하십시오. 하지만 난 당신의 코드를 시도하고 그것은 같은'InvalidOperationException' 던져, 내가 eralier있어. – Matthias
UI 스레드에서 WriteableBitmap을 만들었습니까? 그렇지 않으면'InvalidOperationException'을 삭제할 수 있습니다. 또한 https://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx의주의 사항을 읽고 스레딩과 관련하여 올바르게 수행하고 있는지 확인하십시오. . – ManIkWeet