【发布时间】:2013-03-22 13:57:54
【问题描述】:
我一直在尝试以每秒 60 次的速度更新 PictureBox 的 BMP,并且每次更新都会改变线条模式。发生的情况是图像在屏幕刷新之间进行了部分更新。所以,你看到的是一种模式的一部分,也是下一种模式的一部分。每次屏幕刷新时,我都需要精确更新一次。理想情况下,我的目标是更新后缓冲区,然后将其复制到前缓冲区。我听说您可以在游戏中使用 vsync 来锁定前端缓冲区,以便屏幕仅在屏幕刷新后立即更新。如果我可以利用该锁定,它将允许我每次刷新精确更新一次。但我还没有弄清楚该怎么做。
有什么想法吗?
我确实尝试在 Windows 窗体中使用 DoubleBuffering = true 属性。但它可能不适用于 PictureBox。我使用 CopyMemory(本机 dll 调用)将新模式复制到 PictureBox 中的位图中。
在上一段中我也尝试使用具有相同技术的 WriteableBitmap,但由于某种原因,后缓冲区从未复制到前缓冲区,即使我按照其他人在堆栈交换中建议的方式进行了操作。我试了几个小时左右。使用该技术时,图像从未在屏幕上更新。
【问题讨论】:
标签: bitmap writeablebitmap double-buffering vsync copymemory