2010-04-05 52 views
0

我正在写一个控件,其中有很多自定义绘图正在进行。正因为如此,我需要削减“屏幕写入”的数量。目前只有一个内存DC用于写入屏幕,以避免重绘控件时出现闪烁。我想知道是否有可能使用2个或更多内存DC独立写入更新,然后将它们分配给屏幕。这样就可以最小化渲染屏幕未更改部分的需求。结合2个内存DC?

回答

0

您可以使用多个单独的DC,但都写入相同的位图。在这种情况下,你会得到一个“最后写赢”策略 - 即最后一次写入位图中的任何给定点将成为最终图片中显示的那个点。

这不会在减少绘图到屏幕的方式上获得太多(如果有的话)。 OTOH,一个BitBlt通常足够快,它不太可能有很大的区别。

0

您可以根据需要制作任意数量的DC,将屏幕的一部分准备在一个BitBlt()中,将其内容放入另一个DC中,然后将BitBlt()写入屏幕或其他任何复杂的你想要(在明显的句柄等nr的Windows范围内)。

我同意上面的评论,但它不可能给你任何速度上的收益。我在哪里使用它有时是当复杂的区域:需要更新的区域时,这样做可以节省大量的位置计算。