剪裁區域和Invalidate函式

2021-04-25 18:43:37 字數 672 閱讀 3199

剪裁區域:

在onpaint函式中有乙個引數是paineventargs型別,這個類中儲存了乙個矩形,這個矩形就是所謂的剪裁區域。剪裁區域就是視窗上的無效區域,也就是要重繪的區域。這個區域的大小是由wm_paint訊息決定的。而能產生這個訊息的機制有很多,比如:當窗體部分被其他窗體覆蓋時,這時就會產生乙個無效矩形,其大小是窗體被覆蓋的部分的大小。其中我們可以手動讓窗體產生乙個無效區域,呼叫

invalidate

()函式,這個函式有幾個過載版本,當無引數時,表示使整個窗體矩形無效,剪裁區域為整個窗體。函式也可以帶乙個引數:乙個矩形,那麼產生的無效區域就是傳進來的矩形區域

。理解剪裁區域後我們就可以提高重繪的效率,不用每次重繪都重繪整個可視區域,這也是減少重繪是閃爍的好方法。在我們的onpaint函式中,我們可以針對不同的剪裁區域來進行不同的重繪。

invalidate函式: 

這個函式是使指定的區域加入視窗的無效區域,在下次重繪時,會對無效區域進行繪製,這個函式呼叫只會傳送乙個

wm_paint

訊息,這個訊息的只有在系統空閒時才會被系統處理,因此呼叫這個函式不會立即重繪螢幕,而只是增加無效區域,以待下次重繪時進行繪製。如果要在呼叫這個函式之後立即重繪螢幕,那麼就要在呼叫此函式之後呼叫

update

()函式,這個函式是使視窗立即重繪其無效區域,而不用等待空閒時間。

第26天 Windows程式設計 區域!剪裁!

createrectrgn 建立矩形區域 createrectrgnindirect 建立矩形區域 createellipticrgn 建立橢圓形區域 createellipticrgnindirect 建立橢圓形區域 createpolygonrgn 建立多邊形區域 createpolypolyg...

視窗區域和客戶區域

getclientrect 此函式用於取得視窗的客戶區座標。客戶區即視窗客戶區的左上角和右下角之間 的區域。客戶區座標的原點位於視窗客戶區的左上角,即用此函式得到的座標的 原點是視窗客戶區的左上角,左上角的的座標值為 0,0 返回值 成功時返回非0,失敗時返回0 注意 在與結構rect之間的轉換中為...

CSS的內容溢位和剪裁 overflow

css的內容溢位和剪裁 overflow 為什麼要使用overflow html中經常會出現子元素的寬度或高度超過了 父元素的高度或寬度。頁面上的顯示內容就會超出 父元素的邊框。可以通過overflow進行控制處理。overflow介紹 滾動條樣式主要涉及到如下overflow屬性 overflow...