如何直接在图像上绘图?

时间:2018-04-23 11:35:55

标签: c# wpf image writeablebitmap

我有一个用像素绘制的小程序。它实际上工作正常,但每次它通过我的计时器更新图像,我注意到闪烁。我认为这是因为总是设置一个新的来源,所以我的问题是:如果有一种方法直接在图像上绘制而不是设置新的源?

这是我的绘制方法:

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;
}

1 个答案:

答案 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);
}