我有一個窗體上的一個簡單的面板,我使用AutoScrollMinSize和AutoScroll來獲取我面板上的一些滾動條,一切正常。在滾動事件和繪畫事件之間的延遲,也許之間的東西
我也有一個滾動事件,我用它來使整個面板區域失效,事實上它似乎只是無效滾動左/右,上/下滾動時需要的位。除此之外,我使用與面板大小相同的BufferedGraphics,然後做一個.Render(e.Graphics),因爲我想讓它在整個面板上繪製,就好像滾動條不存在一樣。
現在,我遇到的問題是,在滾動和正在繪製內容時,似乎存在視覺上的滯後滯後,我認爲這是因爲有一個額外的繪圖/設置階段,我不熟悉之前Scroll事件被調用,或者在它和Paint事件之間被調用。
如果我在paint方法內部有一個invalidate面板,您看不到問題,但這更多的是在多次隱藏問題時調用paint事件。
所以我認爲我理解它的方式是,當您滾動時,引擎蓋下的某個東西會執行一個大的矩形移動已經存在的內容,然後使用需要填充的區域的矩形調用invalidate。
如果是這樣的話,反正有沒有這個,就像在禁止這個階段或其他一些設置時我錯過了擺脫繼續滯後?
PS:我也重寫了OnPaintBackground方法,它是一個空的存根。
紡紗自己的雙緩衝方案,堅持繪製整個面板,無論滾動位置是非常好的方式,使繪畫緩慢。不要。 –