QML图形动画基础之

news2024/9/22 11:35:34

图形动画基础

  • 颜色(color)
    • 渐变(Gradient)
    • 系统调色面板(SystemPalette)
  • 图片
  • 边界动画(BorderImage)
  • 动态图片(AnimatedImage)
  • 缩放,旋转和平移变换
  • Transform实现高级变换

颜色(color)

在这里插入图片描述

  • SVG:“red”
  • 十六进制:#RRGGBB
  • Qt函数:Qt.rgba(1, 0, 0, 1)
import QtQuick.Controls 2.15

    Rectangle {
        width: 400
        height: 200
        Rectangle { color: "gold"; width: 400; height: 40}
        Rectangle { color: "transparent"; y: 40; width: 400; height: 40}
        Rectangle { color: "#FFA500"; y: 80; width: 400; height: 40}
        Rectangle { color: "#8000000FF"; y: 120; width: 400; height: 40}
        Rectangle { color: Qt.tint("blue","#55FF0000"); y :160 ; width: 400; height:4 }
    }

渐变(Gradient)

使用渐变开销较大,建议只在静态项目中使用。position取值范围为0到1

import QtQuick.Controls 2.15

    Rectangle {
        y: 300
        width: 100; height: 100
        gradient: Gradient{
            GradientStop { position: 0.0; color: "red" }
            GradientStop { position: 0.33; color: "blue" }
            GradientStop { position: 1.0; color: "green" }
        }
    }

系统调色面板(SystemPalette)

SystemPalette访问Qt应用程序调色板,这些颜色被分为3个颜色组:活动的(Active),非活动Inaction和不可用的Disabled

import QtQuick.Controls 2.15

    Rectangle {
        x: 400
        SystemPalette { id: myPalette; colorGroup: SystemPalette.Active}
        width: 640; height: 480
        color: myPalette.window
        Text {
            anchors.centerIn: parent
            text: "Hello! " ; color: myPalette.windowText
        }
    }

图片

图片路径由source指定,可以是绝对路径或者相对路径,图片可以是Qt支持的任何格式,png,jpge,svc

    Image {
        id: image
        width: 200; height: 200
        fillMode: Image.Stretch
        //实际保存在内存中图片大小为100 * 100像素,可以提高性能。可以应对加载大图片时,内存过大的问题
        sourceSize.width: 100; sourceSize.height: 100
        source: "image.png"

        //图片翻转,镜像
        mirror: true
    }

如果需要将完整的图片显示在左上角,然后向下进行平铺可以添加如下二行代码
horizontalAlignment: Image.AlignLeft
verticalAlignment: Image.AlignTop

边界动画(BorderImage)

Borderlmage类型利用图片创建边框。Borderlmage将源图片分成9个区域,当图片进行缩放时,源图片的各个区域使用下面的方式进行缩放或者平铺
来创建要显示的边界图片:

  • 4个角(1、3、7、9区域)不进行缩放:
  • 区域2和8通过horizontalTileMode属性设置的模式进行缩放;
  • 区域4和6通过verticalTileMode 属性设置的模式进行缩放;
  • 区域5结合 horizontalTileMode和verticalTileMode 属性设置的模式进行缩放。

这些区域可以使用图片的border属性组进行定义。4条边界线将图片分成9个区
域,如图7-5中,上下左右4条边界线分别是border.top、border.bottom、border.left
和border.right,每条边界线都指定了到相应图片边界的、以像素为单位的距离。水平或垂直方向上,可用的填充模式有BorderImage.Stretch(拉伸)、BorderImage.Repeat(平铺但边缘可能被修剪的图片)、Borderlmage.Round(平铺但可能会将图片进行缩小以确保边缘的图片不会被修剪)。
在这里插入图片描述

    BorderImage {
        width: 200; height: 200
        border { left: 30; top: 30; right: 30; bottom: 30 }
        horizontalTileMode: BorderImage.Stretch
        verticalTileMode: BorderImage.Stret
        source: "./src/image.png"
    }

动态图片(AnimatedImage)

Animatedlmage类型扩展了Image类型,可以用来播放包含了一系列帧的图片动
画,比如GIF文件。当前帧和动画总长度等信息可以使用currentFrame和frame
Count属性获取。通过改变playing和paused属性开始、暂停和停止动画。

    Rectangle {
        property int frames
        width: animation.width; height: animation.height + 8
        AnimatedImage { id: animation; source: "./src/giphy.gif"}
        Component.onCompleted: { frames = animation.frameCount}
    }

在这里插入图片描述

缩放,旋转和平移变换

Item类型拥有一个scale属性和一个rotation属性,分别可以实现项目的缩放和旋
转。对于scale,如果其值小于1,会将项目缩小显示;如果大于1,则会将项目放大显示。如果使用一个负值,则显示镜像效果。scale默认值是1,也就是显示正常大小,例如下面的例子将红色矩形放大了1.6倍进行显示。

    Rectangle {
        color: "red"
        width: 100; height: 100
        Rectangle { color: "blue"; x:25; y: 25; width: 25; height: 25; scale: 1.6}
    }

缩放以transformOrigin属性指定的点为原点进行;可用的点一共有9个,默认原点是Center即项目的中心,如果需要使用任意的点作为原点,则需要使用后面讲到的Scale和Rotation对象。下面将红色矩形的定义代码进行更改,使用TopLeft为原点
在这里插入图片描述

    Rectangle {
        color: "red"
        x: 25; y: 25 ; width: 100; height: 100
        scale: 1.6
        transformOrigin: "TopLeft"
    }

使用rotation属性指定项目顺时针旋转的度数,默认值为0;如果是负值,则进行
逆时针旋转。旋转也是以transformOrigin属性指定的点为中心点。例如下面的代码中将红色的矩形顺时针旋转了30度。

    Rectangle {
        color: "red"
        x: 25; y: 25 ; width: 100; height: 100
        scale: 1.6
        transformOrigin: "TopLeft"
        Rectangle { color: "blue"; x:25; y: 25; width: 50; height: 50; rotation: 30}
    }

Transform实现高级变换

可以使用Item的transform属性。Transform属性需要指定一个Transform类型的列表。Transform是一个抽象类型,无法被直接实例化,可用的Transform类型有3个:Rotation、Scale和Translate,分别用来进行旋转、缩放和平移。这些类型可以通过专门的属性进行更高级的变换设置。Rotation提供了坐标轴和原点属性。坐标轴有axis.x、axis.y和axis.z,分别代表X轴、Y轴和Z轴,可以实现3D效果。原点由origin.x和origin.y来指定。对于简单的2D旋转,是不需要指定坐标轴的。对于典型的3D旋转,既需要指定原点,也需要指定坐标轴。图7-13为原点和坐标轴的设置示意图。使用angle属性可以指定顺时针旋转的度数。下面的代码将一个图片以Y轴为旋转轴进行了旋转。

    Row {
        x: 10; y: 10
        spacing: 10
        Image { source:"./src/image.png" }
        Image { source: "./src/image.png"
                       transform: Rotation{origin.x: 30; origin.y: 30;
                       axis {x: 0; y: 1; z: 0} angle: 72}
        }
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/447586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CLion开发工具 | 01 - 认识外观界面

专栏介绍 一、创建/打开项目 二、外观和界面 1. 文件编辑区 CLion的自动提示功能如下: CLion的参数提示功能如下: CLion的形参名称显示功能: 2. 项目文件浏览区 3. 工具栏 3.1. 一键编译运行 CLion内置了MinGW,点击运行可以…

卷积神经网络推理特征图可视化查看,附录imagenet类别和编号对应查询表。通过观察法进行深度学习可解释研究

CNN模型虽然在图像处理上表现出非常良好的性能和准确性,但一直以来都被认为是一个黑盒模型,人们无法了解里面的工作机制。 针对这个问题,研究人员除了从理论层面去寻找解释外,也提出了一些可视化的方法直观地理解CNN的内部机理&am…

atl创建avtive

activex无窗口问题 控件在编码过程中要检查m_hWnd是否存在,不然vs可能会出现绘制错乱和崩溃 atl窗体通过CComControlBase的内部变量控制,窗体属性,包括onsize事件对应的m_bRecomposeOnResize变量控制窗体变化事件响应。 可插入的控件 授权…

Hbase基本操作

目录 HBASE 基本操作 hbase shell:进入hbase shell环境 status命令:查看集群状态 version:查看版本信息 create:创建表 drop 删除表 list:查看所有表 desc :查看表结构 exists :查看表…

分布式数据一致性解决方案推理过程

redis是一个极轻量级的进程,单机单线程单进程。 使用redis很容易实现分布式锁:setnx,同一个key,谁设置成功了,谁就抢到了锁,所以就产生了多锁问题。 假设客户端1抢到了锁,redis挂了&#xff0c…

Docker下载、安装

安装docker前,需要安装WSL Linux 内核、Hyper-V Hyper-V 首先确认系统是否安装:Hyper-V 如果没有则安装: pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt for /f %%i in (findstr /i . h…

java中的泛型

1.2 泛型的引入 在Java中,我们在声明方法时,当在完成方法功能时如果有未知的数据需要参与,这些未知的数据需要在调用方法时才能确定,那么我们把这样的数据通过形参表示。在方法体中,用这个形参名来代表那个未知的数据…

如何在四维轻云地理空间数据管理云平台中搭建场景?

《四维轻云》是一款轻量化的地理空间数据管理云平台,支持地理空间数据的在线管理、编辑以及分享。平台有项目管理、数据上传、场景搭建、发布分享、素材库等功能模块,支持多用户在线协作管理,实现了轻量化、便捷化的空间数据应用。 目前&…

< 前端性能优化: 资源加载优化 >

文章目录 👉 前言👉 一、路由懒加载> 实现代码> 处理前后各文件大小情况 👉 二、组件懒加载> 实现代码> 适用场景 👉 三、骨架屏优化白屏时长👉 四、JavaScript 的6种加载方式1. 正常模式2. async 模式3. …

云端上的结题报告——凌恩智能交付系统

做组学分析的小伙伴不难发现,在拿到测序分析结果后,经常会需要进行调整,比如:配色不符合自己审美、分组需要重新设置、重复性差需要剔除样本等,面对重新分析或改图的情况,自学生信费时费力,找公…

ClickHouse数据一致性

目录 1 准备测试表和数据2 手动OPTIMIZE(不推荐)3 通过 Group by 去重4 通过 FINAL 查询4.1 老版本测试4.2 新版本测试 1 准备测试表和数据 查询 CK 手册发现,即便对数据一致性支持最好的 Mergetree,也只是保证最终一致性: 我们在使用 Repl…

条码控件Aspose.BarCode入门教程(7):如何在Java 中的 GS1-128 条码生成器

Aspose.BarCode for .NET 是一个功能强大的API,可以从任意角度生成和识别多种图像类型的一维和二维条形码。开发人员可以轻松添加条形码生成和识别功能,以及在.NET应用程序中将生成的条形码导出为高质量的图像格式。 Aspose API支持流行文件格式处理&am…

C语言—深度剖析数据在内存中的存储

深度剖析数据在内存中的存储 数据类型介绍类型的基本归类整形在内存中的存储大小端介绍整形在内存中的存储的相关练习浮点型在内存中的存储浮点型在内存中的存储相关介绍 数据类型介绍 内置类型(C语言本身就具有的类型): char //字符…

linux_时序竞态-pause函数-sigsuspend函数-异步I/O-可重入函数-不可重入函数

接上一篇:linux_信号捕捉-signal函数-sigaction函数-sigaction结构体 今天来分享时序竞态的知识,关于时序竞态的问题,肯定会和cpu有关,也会学习两个函数,pause函数,sigsuspend函数, 也会分享什么…

教你轻松申请Azure OpenAI

Azure OpenAI 和 OpenAI 官方提供的服务基本是一致的,但是目前前者还是处于预览版的状态,一些功能还没有完全开放。 优点: 不受地域限制,国内可以直接调用。可以自己上传训练数据进行训练(据说很贵)。Azu…

【原理图专题】Cadence如何导出智能PDF

原理图导出PDF只会使用打印?打印后没有书签还需要手动建立多页面的书签? 其实Cadence支持导出智能pdf,不仅能够在pdf上直接看到料件的各种参数,还可以直接点击连页符跳转到对应的页面和网络上,并且还能根据页面自动建立完整的书签,方便查找。 最终能生成如下所示的页面…

建筑负荷需求响应的介绍

可再生能源发展及电网用电平衡现状 近些年,我国城市建筑的电网供给和需求存在严重的不平衡问题,特别是当受建筑空调季节性负荷的影响时。一方面夏季及冬季电力负荷短缺,而另外一方面全年仍然存在着发电设备过剩、运行小时数不足等问题。以加州为例,夏季高峰用电中 50%左右…

一个对付小孩便秘的指南,让麻麻不再当催屎员

便秘在儿童中很常见。多达30%的儿童患有便秘。据估计,它占所有儿科医生的3%-5%。便秘通常包括排便困难或排便频率降低。正常排便的频率和特征在不同的儿童时期是不同的,因此没有单一的正常定义。●在足月新生儿中,第一次排便通常发生在出生后…

Linux 下 安装多个mysql8.0

1:下载mysql wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar 2:解压下载的mysql压缩包 解压mysql-8.0.33-linux-glibc2.17-x86_64-minimal.tar tar -xf mysql-8.0.33-linux-glibc2.17-x86_64-minimal.ta…

2006年真题

数学基础 一、形式化下列语句(共4分) 1.(1分)没有不犯错误的人。 (∀x)(M(x)−>Q(x)) 2.(2 分)虚数既不是有理数也不是无理数。 (∀ x)(W(x)∧P(x)∧Q(x)) 二、填空题(共 9 分) 1.设集合A{a,b,c}, I A I_A IA​…