一、画布元素

自qt4.7发布qml以来,qml也在一直不断的完善中,在qt4时代使用qml时如果需要异形图,那我们只能让设计师来切图,这样的感觉是很不爽的,总感觉开发没有那么犀利。但是到了qt5这一点有所改变,qt引入了canvas画图,我们可以在程序中自定义一个画布来绘制自己想要的图形,然后达到我们自己想要的效果。

二、效果预览

图1 canvas画布

三、源码分析

代码量都是算法,这个我就不解释了(主要是看不懂),控件中就包含了一个Canvas画布,然后在画布的onPaint函数中绘制图形

 import QtQuick 2.2

 Rectangle{
width: ;
height: ; //自定义画布
Canvas {
id: root;
anchors.fill: parent; //再次函数中绘制图形
onPaint: {
var ctx = getContext("2d");
draw(ctx);
} function draw (ctx) {
ctx.fillRect(, , , );
for (var i = ; i < ; i++) {
for (var j = ; j < ; j++) {
ctx.save();
ctx.strokeStyle = "#9CFF00";
ctx.translate( + j * , + i * );
drawSpirograph(ctx, * (j + ) / (j + ), - * (i + ) / (i + ), );
ctx.restore();
}
}
} function drawSpirograph (ctx, R, r, O) {
var x1 = R - O;
var y1 = ;
var i = ;
ctx.beginPath();
ctx.moveTo(x1, y1);
do {
if (i > ) break;
var x2 = (R + r) * Math.cos(i * Math.PI / ) - (r + O) * Math.cos(((R + r) / r) * (i * Math.PI / ))
var y2 = (R + r) * Math.sin(i * Math.PI / ) - (r + O) * Math.sin(((R + r) / r) * (i * Math.PI / ))
ctx.lineTo(x2, y2);
x1 = x2;
y1 = y2;
i++;
} while (x2 != R-O && y2 != );
ctx.stroke();
}
}
}

四、相关文章

  qml基础学习 基础概念

  qml基础学习 模型视图(一)

如果您觉得文章不错,不妨给个打赏,写作不易,感谢各位的支持。您的支持是我最大的动力,谢谢!!! 

 

很重要--转载声明

  1. 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
  2. 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。

qml基础学习 Canvas画笔的更多相关文章

  1. qml基础学习 模型视图(一)

    一.理解qml模型和视图 qt的发展是迅速的,虽然在每一个release版本中或多或少都有bug,但是作为一个庞大的gui库,no,应该说是一个开发框架开说,qt已经算是做的相当好.qml部分是qt4 ...

  2. qml基础学习 基础概念

    一.概括 学习qt已有2年多的时间,从qt4.7开始使用直到现在正在使用的qt5.6,基本都在windows机器上做开发.最近有意向看了下qt的qml部分,觉着还是挺不错的,毕竟可以做嵌入式移动端产品 ...

  3. canvas一周一练 -- canvas基础学习

    从上个星期开始,耳朵就一直在生病,里面长了个疙瘩,肿的一碰就疼,不能吃饭不能嗨 (┳_┳)……在此提醒各位小伙伴,最近天气炎热,一定要注意防暑上火,病来如山倒呀~ 接下来我正在喝着5块一颗的药学习ca ...

  4. HTML5零基础学习Web前端需要知道哪些?

    HTML零基础学习Web前端网页制作,首先是要掌握一些常用标签的使用和他们的各个属性,常用的标签我总结了一下有以下这些: html:页面的根元素. head:页面的头部标签,是所有头部元素的容器. b ...

  5. Salesforce 集成篇零基础学习(一)Connected App

    本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...

  6. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  7. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  8. IOS基础学习-2: UIButton

    IOS基础学习-2: UIButton   UIButton是一个标准的UIControl控件,UIKit提供了一组控件:UISwitch开关.UIButton按钮.UISegmentedContro ...

  9. python入门到精通[三]:基础学习(2)

    摘要:Python基础学习:列表.元组.字典.函数.序列化.正则.模块. 上一节学习了字符串.流程控制.文件及目录操作,这节介绍下列表.元组.字典.函数.序列化.正则.模块. 1.列表 python中 ...

随机推荐

  1. 用Razor做静态页面生成器

    本来是用asp.net webpages做的博客网站,数据库用了一个陌生的本地数据库,只是觉得用起来很爽快,用新鲜的东西有一种刺激.后来数据库挂了,估计是存某个字段的时候出了问题,可是新鲜的东西,也不 ...

  2. log4net入门

    简介 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题. 经验表明,日志 ...

  3. android知识杂记(三)

    记录项目中的android零碎知识点,用以备忘. 1.android 自定义权限 app可以自定义属于自己的权限: <permission android:description="s ...

  4. Sensor(ORIENTATION)

    package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...

  5. 新浪微博UWP UI意见征求

    各位园主,卑职最近在忙一些新浪微博UWP的事儿,其中有一些UI上的design和实现,拿出来见见公婆,请大家给个意见: 您是喜欢A还是B.麻烦直接回在评论区了,写A或B,愿意多写几句意见的更欢迎! 先 ...

  6. 犀利的background-clip:text,实现K歌字幕效果

    今天学到了一个新的CSS3属性,更准确的说是属性值,那就是background-clip:text.利用此属性值可以制作出很神奇的效果.可惜只有chrome支持,不过今天可以先来玩玩这个属性. 先来介 ...

  7. 安卓手动新增SDK

    一:下载SDK 比如,我正要使用sdk5.0,于是我随便找了一个源下载:http://download.csdn.net/detail/dan_seek/8216801 二:整合进eclipse 解压 ...

  8. C struct结构体内存对齐问题

    在空间看到别人的疑问引起了我的兴趣,刚好是我感兴趣的话题,就写一下.为了别人的疑问,也发表在qq空间里.因为下班比较晚,10点才到家,发表的也晚.其实是个简单的问题.  直接用实例和内存图说明: #i ...

  9. 生成格式化的json

    public static ContentResult returnJson(object obj) { var content = new ContentResult() { Content = J ...

  10. [Java面试十一]数据库总结.

    问题及描述: --1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表 Course ...