我創建的自定義控件需要在其客戶空間中繪製許多「項目」。對Invalidate()的調用會觸發一個新的繪製週期,其中所有項目都將被重新繪製。在自定義控件和無效機制中繪畫
現在當有很多項目,並且在控件內部發生大量導航時,需要優化事物;所以我需要觸發一個繪製週期,其中只繪製一個或兩個項目。我存儲對這些項目的引用,以便繪製方法(OnPaint)知道這是一個「快速」。
難度在於,當執行OnPaint時,很難知道其他Invalidate()調用是否在此期間進行。在這種情況下,它應該做一個「正常的」,完整的油漆。
我確實利用了剪切矩形。當然,我可以檢查OnPaint中的剪切矩形是否已成爲整個客戶端矩形,這是調用Invalidate()的標誌,但這不是100%安全的。我想到了其他類似的解決方案,但他們似乎很難。
這個問題通常或最好解決的方法是什麼?