• 4783阅读
  • 5回复

[讨论]关于Qt5中dialcontrol代码实现 [复制链接]

上一主题 下一主题
离线兵317
 

只看楼主 倒序阅读 楼主  发表于: 2016-06-15
        请问大家,Qt5里面自带的dialcontrol(qml写的)例子,用滑动条控制指针的旋转运行,过程很流畅,一点都不生硬,部分核心代码如下:
//! [needle_shadow]
//! [needle]
    Image {
        id: needle
        x: 98; y: 33
        antialiasing: true
        source: "needle.png"
        transform: Rotation {
            id: needleRotation
            origin.x: 5; origin.y: 65
            //! [needle angle]
            angle: Math.min(Math.max(-130, root.value*2.6 - 130), 133)
           Behavior on angle {
                SpringAnimation {
                    spring: 1.4
                    damping: .15
                }
            }

            //! [needle angle]
        }
    }
红色字体部分代码(Behavior on angle...SpringAnimation...)应该是其运行很流畅的关键所在,但我不知道它用C/C++是怎么实现的,一点资料都没搜到,我也不知道怎么直接在C++中用上它来达到同样的流畅效果。望知情大侠告知一二,十分感谢(备注:大家如有兴趣也可以底下研究下,或者有什么建议可以在这里告诉我 贴出的工程是我目前实现的效果,比较生硬,效果与例子相比差了不少,希望大家能在此基础上优化下达到dialcontrol例子的那种流畅度(略次也可),不甚感激)表盘旋转(滑动条控制) painter5.zip (61 K) 下载次数:9 Qt5自带qml例子 dialcontrol.zip (104 K) 下载次数:7
离线兵317

只看该作者 1楼 发表于: 2016-06-15
以下是分别运行dialcontrol和painter5的截图
离线马侬骑士

只看该作者 2楼 发表于: 2016-06-16
SpringAnimation是弹簧动画
骚年没事多 看看帮助文档
SpringAnimation QML Type
Allows a property to track a value in a spring-like motion More...
离线兵317

只看该作者 3楼 发表于: 2016-06-16
回 马侬骑士 的帖子
马侬骑士:SpringAnimation是弹簧动画
骚年没事多 看看帮助文档
SpringAnimation QML Type
Allows a property to track a value in a spring-like motion More...
 (2016-06-16 08:50) 

知道是那个,我的意思是怎样用C/C++实现那种效果
离线马侬骑士

只看该作者 4楼 发表于: 2016-06-16
无非是实现动画效果方法很多,但是你要是非要用这种panter进行的话,感觉稍微不好操作,不过也是有办法,参看(The Animation Framework )
1、QTimeLine根据时间轴计算你的实时angle
2、QVariantAnimation动画生成你的实时angle

建议改写实现
1、用QPropertyAnimation动画实现 ,参考easing例子用场景布置,QGraphicsPixmapItem进行动画属性rotation属性
2、 QStateMachine 设置不同角度的状态,然后状态过度
离线兵317

只看该作者 5楼 发表于: 2016-06-17
回 马侬骑士 的帖子
马侬骑士:无非是实现动画效果方法很多,但是你要是非要用这种panter进行的话,感觉稍微不好操作,不过也是有办法,参看(The Animation Framework )
1、QTimeLine根据时间轴计算你的实时angle
2、QVariantAnimation动画生成你的实时angle
建议改写实现
....... (2016-06-16 17:00) 

嗯,谢谢,时间线用了,但效果不理想,中间有停顿现象。其他的你说的这些只是大概有个一面之缘,不甚了解,我查查资料,试试。
快速回复
限100 字节
 
上一个 下一个