欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

qt动画的有关问题

更新时间: 2014-01-05 02:43:49 责任编辑: Author_N1

 

qt动画的问题
我需要画一条线(暂且说是直线吧),但是不能是直接显示出来在窗口,我希望它能够像从头画到尾,像是一个动画,效果就像是把画线这个过程放的很缓慢,慢慢的画出来。求大神指点啊?
--参考方法--
动过定时器的方式来处理,

起点是定的,只需要改变,线的终点,线的终点怎么改变呢?

最大线长度,xMax,increment
void CMWidget::timer()
{
    x += increment;
    if (x > xMax)
    {
       x = xMax;
       killTimer(id);
    }   
    update();//触发paintEvent调用
}

CMWidget::paintEvent()
{
    //这里画线
}
--参考方法--
使用属性动画描绘你所说的纵向或横向直线是比较容易实现的。以下是模拟一个点的横向或者纵向移动从而描绘出一条线的步骤:
1,自己重写一个qwidget的paintEvent,将这个widget全部填充同一种颜色。
2,在主widget上添加一个你重写的widget,尺寸设置为1*1,即一个像素点。
3,定义一个属性动画对象,对应到你重写的widget的size属性,然后设置好起始size和终止size,就可以模拟出横向或者纵向上的直线描绘。
其本质是把一个1*1的widget拉长成一个1*N像素的widget或者N*1像素的widget,或者N*M像素的widget。

如果你需要描绘的是一条曲线,可以考虑利用定时器,并重新实现paintEvent函数,这需要一些时间和技巧。

当然如果你使用QGraphicsView Framework,可以通过遮罩的方式,用图片和属性动画实现逐渐描绘出一条特定的曲线。

最后如果你需要一些效率较高的简单平面动画,可以考虑了解QGraphicsView Framework(包括QGraphicsItem,QGraphicsView,QGraphicsScene等),并了解一下QPropertyAnimation等。不一定非要用到QStateMachine Framework。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:43:49
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13640/
本文WWW.DOC100.NET DOC100.NET版权所有。