我有一个用像素绘制的小程序。它实际上工作正常,但每次它通过我的计时器更新图像,我注意到闪烁。我认为这是因为总是设置一个新的来源,所以我的问题是:如果有一种方法直接在图像上绘制而不是设置新的源?
这是我的绘制方法:
private void SetPixel(int x, int y)
{
WriteableBitmap wrb = new WriteableBitmap((BitmapSource)image.Source);
byte[] color = new byte[] { b, g, r, a };
wrb.WritePixels(new Int32Rect(x, y, 1, 1), color, 4, 0);
image.Source = wrb;
}
答案 0 :(得分:0)
您可以尝试将Source
属性转换为WriteableBitmap
,而不是每次都将其设置为新的WriteableBitmap
:
private void SetPixel(int x, int y)
{
WriteableBitmap wrb = image.Source as WriteableBitmap;
if (wrb == null)
{
wrb = new WriteableBitmap((BitmapSource)image.Source);
image.Source = wrb;
}
byte[] color = new byte[] { b, g, r, a };
wrb.WritePixels(new Int32Rect(x, y, 1, 1), color, 4, 0);
}