Qml路径动画PathAnimation

该文介绍了一个使用QtQuick2.12创建的窗口应用,展示了如何结合Canvas和PathAnimation来实现一个SVG路径动画。动画涉及清屏、描边、路径设定以及无限循环和缓动效果,用于控制一个汽车图像沿着指定路径移动。
摘要由CSDN通过智能技术生成
import QtQuick 2.12
import QtQuick.Window 2.0
import QtQuick.Controls 2.4


Window{
    id: window
    width: 680
    height: 320
    visible: true

    Canvas {
                id: canvas
                anchors.fill: parent
                antialiasing: true                              //抗锯齿
                onPaint: {
                    var context = getContext("2d")
                    context.clearRect(0, 0, width, height)      //清屏
                    context.strokeStyle = "red"                 //设置笔的颜色
                    context.path = pathAnim.path                //设置路径
                    context.stroke()                            //绘制已定义的路径
                }
        }

        PathAnimation {
            id: pathAnim
            running: true
            loops: Animation.Infinite                           //无限循环
            duration: 5000                                      //单词动画时间为5S
            easing.type: Easing.InQuad                          //设置动画的缓和曲线,此时动画效果为从慢到快
            target: car                                         //设置目标对象
            orientation: PathAnimation.RightFirst               //运动策略,让目标的右侧在前面沿着路径移动
            anchorPoint: Qt.point(car.width/4, car.height/2)      //锚点的位置
            path: Path {
                startX: 100; startY: 100                        //路径起始位置

                PathSvg {                                       //由SVG路径字符串实现路径
                   path: "M100 100 C600 50, 150 250, 550 250"    //M moveto C curveto
                }
            }
        }

        Item {
            id: car
            x: 25; y: 25
            width: 80; height: 38

            Image{
                source: "car.png"
            }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值