4
我維護一個包含以下一些代碼:RestoreDC之後需要調用TCanvas.Refresh嗎?
Canvas.Refresh;
SavedDC := SaveDC(Canvas.Handle);
try
// Paint Stuff to the Canvas
finally
RestoreDC(Canvas.Handle, SavedDC);
Canvas.Refresh;
end;
我已經瞭解到,TCanvas.Refresh一點都不像一個組件刷新。它不會導致任何東西繪畫,它只是invalidates the Font, Pen, and Brush of the canvas。
我不明白你爲什麼要保存DC之前調用.Refresh,然後恢復它。這似乎有點失敗了SaveDC/RestoreDC調用的目的。
用於這些調用更合理的順序似乎是:
SaveDC(Canvas.Handle)
Canvas.Refresh
try
// Do my painting
finally
RestoreDC(Canvas.Handle, SavedDC);
end;
因爲我從來沒有見過或用過的TCanvas.Refresh方法我想檢查並確保我正確地理解這一點。
從文章看來,我應該在調用刷新之前保存句柄。當然,它也說,先調用刷新只需要Windows 9x ... – 2011-01-07 23:10:08