在滾動視窗內時,Gtk 繪圖區域並不總是呈現

在滾動視窗內時,Gtk 繪圖區域並不總是呈現

我在滾動視窗內的視窗內有一個繪圖區域。當繪圖區域適合捲動視窗時,影像呈現良好。但是,當我要求的尺寸大於滾動視窗時,當我向上或向下滾動時,繪圖區域並不總是重新繪製,並且在調整父視窗大小時也會發生相同的情況。發生的情況是,我在滾動視窗內得到了正確大小的區域,但看起來好像內部沒有繪圖區域,或者繪圖區域上好像沒有繪製任何內容,有時會隨機閃爍正確的繪圖滾動條的位置。我已將一個回調連接到每次調用時打印“render”的繪製信號,另一個回調連接到滾動條調整的值更改信號,該信號在滾動時將“adj”打印到屏幕。終端輸出如下

adj
adj
adj
adj
adj
1428919598 render
adj
adj
adj

因此,每次我看到 adj 時,畫布看起來都是空白的,而當我看到 <...> 渲染時,它會正確繪製。因此,透過快速滾動,我會得到閃爍的圖像。知道是什麼原因造成的嗎?

答案1

我正在將一些程式碼從 gtk2 移植到 gtk3。問題出在新訊號“draw”中,它現在取代了“expose-event”。在舊版本中,我必須在訊號處理程序中建立上下文,但新的回調將其作為參數之一,並且應該使用它。

相關內容