【发布时间】:2016-06-07 10:58:12
【问题描述】:
这个想法是处理加载的图像。我首先想以这种方式处理它,即有一条白/黑线穿过图像。 实际问题是,一个新线程(用于 Thread.Sleep)在处理时冻结了整个 UI。当我尝试使用 Dispatcher 时,图像不会更新。
所以我得到了一个处理类:
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);
}
}));
};
感谢您的帮助。
【问题讨论】:
标签: mvvm writeablebitmap