我在滚动窗口内的视口内有一个绘图区域。当绘图区域适合滚动窗口时,图像渲染得很好。但是当我请求大于滚动窗口的大小时,当我向上或向下滚动时,绘图区域并不总是重新绘制,当调整父窗口大小时也会发生同样的情况。发生的情况是,我在滚动窗口内获得了一个正确大小的区域,但看起来好像里面没有绘图区域,或者好像绘图区域上没有绘制任何内容,有时会在滚动条的随机位置闪烁正确的绘图。我已经将一个回调连接到绘制信号,每次调用时都会打印“render”,并将另一个回调连接到滚动条调整的值更改信号,每当滚动条时都会将“adj”打印到屏幕上。终端输出如下
adj
adj
adj
adj
adj
1428919598 render
adj
adj
adj
因此,每次我看到 adj 时,画布看起来都是空白的,而当我看到 <...> render 时,它会被正确绘制。因此,通过快速滚动,我得到了闪烁的图像。知道是什么原因造成的吗?
答案1
我正在将一些代码从 gtk2 移植到 gtk3。问题出在新的信号“draw”上,它现在取代了“expose-event”。在旧版本中,我必须在信号处理程序中创建上下文,但新的回调将其作为参数之一,并且应该使用它。