2010-04-05 50 views
0

我正在寫一個控件,其中有很多自定義繪圖正在進行。正因爲如此,我需要削減「屏幕寫入」的數量。目前只有一個內存DC用於寫入屏幕,以避免重繪控件時出現閃爍。我想知道是否有可能使用2個或更多內存DC獨立寫入更新,然後將它們分配給屏幕。這樣就可以最小化渲染屏幕未更改部分的需求。結合2個內存DC?

回答

0

您可以使用多個單獨的DC,但都寫入相同的位圖。在這種情況下,你會得到一個「最後寫贏」策略 - 即最後一次寫入位圖中的任何給定點將成爲最終圖片中顯示的那個點。

這不會在減少繪圖到屏幕的方式上獲得太多(如果有的話)。 OTOH,一個BitBlt通常足夠快,它不太可能有很大的區別。

0

您可以根據需要製作任意數量的DC,將屏幕的一部分準備在一個BitBlt()中,將其內容放入另一個DC中,然後將BitBlt()寫入屏幕或其他任何複雜的你想要(在明顯的句柄等nr的Windows範圍內)。

我同意上面的評論,但它不可能給你任何速度上的收益。我在哪裏使用它有時是當複雜的區域:需要更新的區域時,這樣做可以節省大量的位置計算。