Qt文档阅读笔记-QML Canvas的官方解析及实例
发布日期:2021-06-30 10:58:50
浏览次数:2
分类:技术文章
本文共 1890 字,大约阅读时间需要 6 分钟。
目录
官方解析
Canvas可以用于画直线或曲线,简单或复杂的形状,图形,图片,并且他能加文字,颜色,阴影,和颜色梯度,和其他的装饰,可以进行低像素操作。Canvas可以保存成图像文件,或者有序列号的URL。
使用Context2D对Canvas进行渲染,通常是写到信号paint中。 通过Canvas的width和height属性可设置绘画区域,举个例子,下面的这个例子创建了一个Canvas,并且这个Canvas画了一个区域,这个区域height为100像素,width为200像素。import QtQuick 2.0 Canvas { id: mycanvas width: 100 height: 200 onPaint: { var ctx = getContext("2d"); ctx.fillStyle = Qt.rgba(1, 0, 0, 1); ctx.fillRect(0, 0, width, height); } }目前(Qt5.8的文档)的Canvas只支持2D渲染。
博主例子
这里提供两个例子,一个例子是官方例子,一个是自己写的小栗子
例子运行截图如下:
程序的结构如下:
源码如下:
main.cpp
#include#include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl("qrc:/main.qml")); if(engine.rootObjects().isEmpty()){ qDebug() << "engine load failed!"; return -1; } return a.exec();}
main.qml
import QtQuick 2.7import QtQuick.Controls 2.0ApplicationWindow { visible: true width: 800 height: 600 MyCanvas{ id: myCanvas } MyCanvas2{ id: myCanvas2 anchors.centerIn: parent }}
MyCanvas.qml
import QtQuick 2.0Canvas{ id: myCanvas width: 100 height: 200 onPaint: { var ctx = getContext("2d"); ctx.fillStyle = Qt.rgba(1, 1, 0, 1); ctx.fillRect(0, 0, width, height); }}
MyCanvas2.qml
import QtQuick 2.0Canvas{ property real radius: 100 property color arcColor: "#EE3A8C" id: myCanvas2 width: 2 * radius + 5 height: 2 * radius + 5 Text{ anchors.centerIn: parent font.pointSize: 15 text: qsTr("中文") } onPaint: { var ctx = getContext("2d") ctx.clearRect(0, 0, width, height); ctx.beginPath() ctx.strokeStyle = arcColor ctx.lineWidth = 2 ctx.arc(width/2, height/2, radius, 0, Math.PI*2, true) ctx.stroke() }}
转载地址:https://it1995.blog.csdn.net/article/details/86161675 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月13日 22时20分26秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
超线程 Hyper-Threading
2019-04-30
sshfs——挂载远程服务器目录
2019-04-30
对比学习 Contrastive Learning
2019-04-30
Inductive bias(归纳偏置)
2019-04-30
稀疏卷积
2019-04-30
JFT 数据集
2019-04-30
JAX / Flax 框架(谷歌)
2019-04-30
feed-forward layer (前馈层)
2019-04-30
NAS (Network Attached Storage 网络附属存储)
2019-04-30
Pytorch的timm库(Timm library)
2019-04-30
photometric distortion(光度失真)
2019-04-30
并发编程的7个模型
2019-04-30
i.i.d 独立同分布
2019-04-30
视频序列的深度表征和理解
2019-04-30
lmdb数据库
2019-04-30
git 拉取远程特定分支(github)
2019-04-30
Ubuntu更新后终端中字体的颜色全是白色
2019-04-30
Ninja
2019-04-30
lmdb数据库的读取与转换(一) —— 基本操作
2019-04-30
opencv相关操作(cv2) (python)
2019-04-30