我正在编写一个控件,其中有很多自定义绘图。因此,我需要减少“屏幕写入”的数量。目前只有一个内存DC用于写入屏幕,以避免重绘控件时出现闪烁。我想知道是否有可能使用2个或更多内存DC独立写入更新,然后将它们bitblt到屏幕。这样,最小化了呈现屏幕的未改变部分的需要。
答案 0 :(得分:0)
您可以使用多个单独的DC,但都写入相同的位图。在这种情况下,您将获得“最后写入获胜”政策 - 即,对位图中任何给定位置的最后一次写入将是最终图片中显示的位置。
虽然减少绘图到屏幕的方式不会给你带来太多(如果有的话)。 OTOH,BitBlt
通常足够快,不太可能产生太大的影响。
答案 1 :(得分:0)
您可以根据需要制作尽可能多的DC,将屏幕的一部分准备在一个BitBlt()中将其内容添加到另一个DC,然后将BitBlt()添加到屏幕或其他任何内容,就像您一样复杂想要(在Windows的限制范围内显然是句柄等)。
我同意上述评论,但它不太可能给你任何速度提升。我使用它的地方有时是区域复杂的地方:需要更新的区域,有时可以节省大量的位置计算。