我直接繪圖使用BitBlt
和GetDC(IntPtr.Zero)
屏幕時後自己清理。當我完成後,有沒有辦法在整個屏幕上調用Refresh或Invalidate,這樣我就不會在任何地方(數字地說)留下大量的繪畫?當你直接畫到屏幕上,就像我正在做的一樣,你繪製的任何東西都會保留在那裏,直到它下面的窗口重新繪製(這樣做,重新繪製它覆蓋的屏幕部分)。如何直接在屏幕上繪圖
問題是,Windows桌面的某些部分不會長時間重新繪製自己。例如,如果我繪製任務欄的頂部,實際任務會很快重新繪製自己(以及「開始」按鈕等),但任務欄本身會保留我繪製的內容,只需幾分鐘。
如果我的應用程序有一個覆蓋整個屏幕的窗口,我只需在該窗體上調用Invalidate()
,這將導致它重新繪製自身,從而重新整個屏幕。我需要的是在整個屏幕本身上調用Invalidate
或Refresh
的某種方式。
你能更具體嗎?你在哪裏/在做什麼,以及你想要完全無效的領域? (即,你想要某些窗口重新繪製?如果是這樣,哪些窗口?等) – vladr 2010-03-29 18:01:08
你可能想要做GetWindowDC(GetDesktopWindow())使你的代碼更明顯,並確保你的不受支持的使用魔術值不讓你的應用程序分解線。 – 2010-03-29 21:20:49