Qt之图形(简笔画-绘制卡通蚂蚁)
简述
关于简笔画的介绍很多,有动物、水果、蔬菜、交通工具等,通常会对绘制一步步进行拆分、组合。然后绘制为我们想要的结果。
下面来介绍另外的一个种类:昆虫类-卡通蚂蚁。
绘制
效果
具体的效果如下所示,我们可以再进行更好的完善。
源码
主要分为以下三部:
- 绘制屁股
- 绘制肚子
- 绘制头部
注意:绘制的时候,由于各个部分的颜色不同,而且坐标不好定位,所以我们采用的图形覆盖的方式。
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHint(QPainter :: Antialiasing, true);
/*****屁股*****/
QPainterPath path;
path.addRoundRect(QRect(200, 60, 150, 150), 1000);
painter.setBrush(Qt::white);
painter.setPen(Qt::black);
painter.drawPath(path);
/*****肚子*****/
// 腿
path = QPainterPath();
path.moveTo(170, 180);
path.lineTo(120, 260);
path.moveTo(185, 180);
path.lineTo(145, 280);
path.moveTo(200, 180);
path.lineTo(180, 290);
path.moveTo(200, 180);
path.lineTo(220, 290);
path.moveTo(215, 180);
path.lineTo(250, 280);
path.moveTo(230, 180);
path.lineTo(280, 260);
painter.setBrush(Qt::NoBrush);
painter.setPen(Qt::white);
painter.drawPath(path);
// 肚子
path = QPainterPath();
path.addRoundRect(QRect(150, 130, 100, 100), 1000);
painter.setBrush(Qt::white);
painter.setPen(Qt::black);
painter.drawPath(path);
/*****头*****/
// 犄角
path = QPainterPath();
path.moveTo(80, 100);
path.lineTo(60, 20);
path.moveTo(140, 100);
path.lineTo(160, 20);
painter.setBrush(Qt::NoBrush);
painter.setPen(Qt::white);
painter.drawPath(path);
path = QPainterPath();
path.addRoundRect(QRect(50, 80, 120, 120), 1000);
painter.setBrush(Qt::white);
painter.setPen(Qt::black);
painter.drawPath(path);
// 左眼
path = QPainterPath();
path.addRoundRect(QRect(70, 120, 25, 25), 1000);
painter.setBrush(Qt::black);
painter.setPen(Qt::NoPen);
painter.drawPath(path);
path = QPainterPath();
path.addRoundRect(QRect(75, 126, 10, 10), 1000);
painter.setBrush(Qt::white);
painter.setPen(Qt::NoPen);
painter.drawPath(path);
// 右眼
path = QPainterPath();
path.addRoundRect(QRect(120, 110, 25, 25), 1000);
painter.setBrush(Qt::black);
painter.setPen(Qt::NoPen);
painter.drawPath(path);
path = QPainterPath();
path.addRoundRect(QRect(125, 118, 10, 10), 1000);
painter.setBrush(Qt::white);
painter.setPen(Qt::NoPen);
painter.drawPath(path);
// 嘴
path = QPainterPath();
path.moveTo(160, 108);
path.arcTo(QRect(130, 48, 60, 60), 270, 100);
painter.rotate(30);
painter.setBrush(Qt::NoBrush);
painter.setPen(Qt::black);
painter.drawPath(path);
}
对于一般图形的绘制比较简单,因为常用、有规律,而且比较规则,像圆、椭圆、矩形、直线这些。如果存在各种复杂的图形那么用原生的绘制方案就很难实现了,需要消耗大量的时间来回折腾,所以这里就不再介绍了。
Qt之图形(简笔画-绘制卡通蚂蚁)的更多相关文章
- Qt之图形(简笔画-绘制漂亮的西瓜)
简述 Summer is coming-我们呢,为大家准备了丰盛的佳果-西瓜,清爽解渴,甘味多汁. 一笔一划学简笔画,分分钟让你掌握一门新技能,下面我们来绘制一个"盛夏之王"-西瓜 ...
- QT 基本图形绘制
QT 基本图形绘制 1.告诉绘制引擎一些东西 QPainter::Antialiasing 在可能的情况下,反锯齿 QPainter::TextAntialiasing 在可能的情况下,文 ...
- IOS 绘制基本图形( 画圆、画线、画圆弧、绘制三角形、绘制四边形)
// 当自定义view第一次显示出来的时候就会调用drawRect方法- (void)drawRect:(CGRect)rect { // 1.获取上下文 CGContextRef ctx = UIG ...
- Qt之图形(绘制文本)
简述 前面我们讲解了Qt图形的基本绘制,其中包括: 绘制文本.直线.直线.矩形.弧线.椭圆.多边形.图片,以及其它一些高级用法,比如:渐变.转换等. 本节我们来详细讲解文字的绘制.主要通过QPaint ...
- Qt之图形(QPainter的基本绘图)
简述 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类. QPainter用来执行 ...
- Qt编写自定义控件8-动画按钮组控件
前言 动画按钮组控件可以用来当做各种漂亮的导航条用,既可以设置成顶部底部+左侧右侧,还自带精美的滑动效果,还可以设置悬停滑动等各种颜色,原创作者雨田哥(QQ:3246214072),驰骋Qt控件界多年 ...
- Qt自定义控件之仪表盘2--QPaint绘制仪表盘
0.前言 前面一篇文章写道了仪表盘的特点,实现了一个贴图的仪表盘,属于低配版本的仪表盘. 主要是有任何改动时候就需要重新设计图片,不能适配不同控件大小,即使让它自由拉伸,但仪表盘放大缩小时候显示 ...
- 借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制
原文:借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制 本文所示例子是借助第三方设计软件,制作复杂的矢量图形,转成与XAML酷似的SVG,再转换成xaml而实现的. 这 ...
- GDI+绘制图形和画刷填充图形
GDI+可以再Windows窗体应用程序中以编程方式绘制图形等. 可以在VS里新建项目-Windows窗体应用程序-建一个窗体.首先引入命名空间using System.Drawing.Imaging ...
随机推荐
- u-boot启动代码start.S详解
(1)定义入口.由于一个可执行的Image必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM(Flash)的0x0地址,因此,必须通知编译器以使其知道这个入口,该工作可通过修改连接器脚本 ...
- js手动定时清除localStorage
<script type="text/javascript"> // 假设要保存变量 a 的值,过期时间为 3600秒 // 保存值 var obj = new Obj ...
- Git学习总结(9)——如何构建你自己的 Git 服务器
现在我们将开始学习如何构建一个Git服务器,如何在具体的事件中写一个针对特定的触发操作的自定义Git(例如通告),如何发布你的代码到一个网站. 目前为止,用户对Git的焦点主要在Git的使用上.这篇文 ...
- HTML---经常使用标签总结与实践
什么是HTML? 超文本标记语言,标准通用标记语言下的一个应用. "超文本"就是指页面内能够包括图片.链接,甚至音乐.程序等非文字元素. 超文本标记语言的结构包含" ...
- bzoj-1492 货币兑换Cash (1)——平衡树维护凸包
题意: 有n天和m的初始金钱,用来购买AB两种纪念券: n天里每天都有AB的价格.每天能够进行这种操作. 1.卖出手中x%的纪念券(AB分别都卖出x%). 2.用x的金钱买入纪念券.买入AB券的比例在 ...
- 2)Win10-UWA开发 API參考 - 1
孙广东 2015.8.23 大多数 Windows 执行时 API 如今适用于 Windows Phone 应用商店应用以及 Windows 应用商店应用,这意味着当你创建同一时候面向 Window ...
- 【Java】【Flume】Flume-NG启动过程源代码分析(一)
从bin/flume 这个shell脚本能够看到Flume的起始于org.apache.flume.node.Application类,这是flume的main函数所在. main方法首先会先解析sh ...
- jni javah
如何通过javah生成jni头文件 1.javah的使用说明: -classpath 给出包含native接口的java类的.class文件路径 -d / –o 指定生成的头文件的,-d只给出文件 ...
- nyoj--203--三国志(迪杰斯特拉+背包)
三国志 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 <三国志>是一款很经典的经营策略类游戏.我们的小白同学是这款游戏的忠实玩家.现在他把游戏简化一下,地图 ...
- ubuntu上配tensorflow
前一阵绕了大弯路,基本弄好了UEFI双系统后,面对的就是CUDA咋装在Linux. 好在教程好多,有些朋友建议先装CUDA再装显卡驱动.弄好之后记录一下详细过程吧. *** 这两天看了一些教程,还是感 ...