gtk 绘图区不重绘内容

Posted

技术标签:

【中文标题】gtk 绘图区不重绘内容【英文标题】:gtk drawing area does not redraw content 【发布时间】:2020-03-21 19:28:22 【问题描述】:

我使用的是 Ubuntu 19.10 64 位系统

源文件:

https://drive.google.com/open?id=1I4ejOHNXqbAOkTbIyJR0lvldsAwiPPqI

问题:

我正在使用 gtk 和 glade 和 c 编写一个简单的绘图程序。现在我坚持实施撤消行为。我有两个问题。当我按下撤消按钮时,有些情况。

1) 当我在画布上画一个笔画或一个点时,它就像我所经历的那样完美。画布会自行清除。

2) 当我在画布上有两个笔划或两个点时,如果我单击一次撤消,画布不会重新绘制自身,除非我再次绘制;如果我单击两次,它就像在第一种情况下一样完美,画布会清除。

3) 当我在画布上有两个以上的笔划或两个点时,如果我单击两次撤消,程序将停止工作,等待我强制退出。

我是使用 glade、gtk3 和 cairo 库的初学者。这几天我一直在寻找这个问题。但是,与趋势框架和库相比,资源稀缺。此外,我无法匹配我需要的问题。感谢您的帮助。

EDIT我忘了补充说在函数之后出现了停止问题,on_undo_clicked第二次退出(两次撤消点击)。

【问题讨论】:

【参考方案1】:

我解决了这个问题。

函数中addPoint我忘了next结构体指针的pre指针可能是悬空指针。它会产生问题。

【讨论】:

以上是关于gtk 绘图区不重绘内容的主要内容,如果未能解决你的问题,请参考以下文章

UIView 不重绘,但元素错位

NSTableView 在特定条件下不重绘

线性变换

UICollectionview 不重绘渐变按钮

UICollectionView 不重绘

图像设置为零时UIImageView不重绘