• 10024阅读
  • 7回复

我打算用Qt画动态图,请问怎么解决闪烁问题 [复制链接]

上一主题 下一主题
离线jacky_yu1982
 

只看楼主 倒序阅读 楼主  发表于: 2008-10-06
— 本帖被 XChinux 执行加亮操作(2008-10-06) —
是这样的,用了QCanvas类,把所有的绘图语句画在一个pixmap上,然后把pixmap设到了QCanvas上,因为是动态的在画,所以每秒都刷新了一下,发现有闪烁,请问怎么解决。我是用painter画,drawEllipse()函数。请问我该怎么画
离线benkei

只看该作者 1楼 发表于: 2008-10-06
这种的就不能整个用贴图刷背景吧。
直接重载canvasview,在paintevent里面画吧。
挂个时控一秒钟repaint(true)试试吧。
离线netlove

只看该作者 2楼 发表于: 2008-10-06
QCanvas类不是自带双缓冲吗?我在上面画的动画没有问题啊
离线reclusun
只看该作者 3楼 发表于: 2008-10-08
Qt4已经默认双缓冲了,直接画就行。
你用的不是Qt3吧
离线diyuanbo

只看该作者 4楼 发表于: 2008-10-18
我的理解是用线、圆、矩形、文字等QCanvasItem 放在Canvas上,然后动态改变CanvasItem的大小、位置、颜色等等,至于如何画,交给QCanvasItem自己。如果QT3自带的几个QCanvasItem不够使,可以自己继承QCanvasItem等。不过QT4的QGraphicsScene相当强大,是QCanvas的升级版。Canvas有内建的双缓冲机制,不会闪烁。
离线diyuanbo

只看该作者 5楼 发表于: 2008-10-18
我的理解是用线、圆、矩形、文字等QCanvasItem 放在Canvas上,然后动态改变CanvasItem的大小、位置、颜色等等,至于如何画,交给QCanvasItem自己。如果QT3自带的几个QCanvasItem不够使,可以自己继承QCanvasItem等。不过QT4的QGraphicsScene相当强大,是QCanvas的升级版。Canvas有内建的双缓冲机制,不会闪烁。
离线xiaodong
只看该作者 6楼 发表于: 2008-10-18
用QCanvasSprite,可以把你的一组pixmap放在QCanvasPixmapArray
然后设置setFrameAnimation();advance(1);setAdvancePeriod();
就可以了,Qt自动帮你实现,具体参数看帮助文档!
离线zifengshen

只看该作者 7楼 发表于: 2009-08-06
双缓冲机制,使用Qt的双缓冲机制就可以解决问题
快速回复
限100 字节
 
上一个 下一个