在WPF中一次绘制一个像素或一行并显示它

时间:2014-12-02 13:59:39

标签: c# wpf

我将我的光线跟踪器迁移到C#和WPF,但我遇到了最简单的问题:如何在画布或位图上显示每个像素(或线)。

我希望能够在完成后看到每个新像素(或至少每条完成的线条),而不是等到整个图像被创建完毕。

与许多RayTracers一样,我有一个中央循环,它可以扫描'屏幕:

for(int y = 0; y < height; y++)
{
    for(int x = 0; x < width; x++)
    {
        pixelRGB = SendRay(...);

        // PLEASE help me update the image here ! :-)
        DrawPixelAndLetTheUserSeeIt();
    }
}

我尝试过使用WritableBitmap或直接写入画布,但是 图像未经更新/显示,直到整个循环结束。

我怀疑是与线程有关,但我无法绕过它。

1 个答案:

答案 0 :(得分:0)

我对WPF一点都不熟悉,所以如果我偏离主题,请原谅 这里可能有一些双缓冲会阻止您控制何时有效地完成图形更新?

如果是这样,您可能想要触发将缓冲区交换到图形界面。