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 ...
随机推荐
- tp框架表单提交注意!不要提交到当前方法
tp框架 表单提交到当前方法,会重复执行显示部分和保存部分的代码.导致不知名的错误.
- 记一次在广播(BroadcastReceiver)或服务(Service)里弹窗的“完美”实践
事情是这样的,目前在做一个医疗项目,需要定时在某个时间段比如午休时间和晚上让我们的App休眠,那么这个时候在休眠时间段如果用户按了电源键点亮屏幕了,我们就需要弹出一个全屏的窗口去做一个人性化的提示,“ ...
- shell脚本学习之ubuntu删除多余内核
#!/bin/bash #定期删除内核 #存储命令输出cmd_output=`commands` uname_output=$(uname -r) kernel_output=`dpkg --list ...
- window8.1 CenterOS 双系统
window8.1 CenterOS 双系统 学习了: http://blog.csdn.net/ac_hell/article/details/53436890 https://jingyan.ba ...
- [ReactVR] Render Custom 3D Objects Using the Model Component in React VR
React VR isn't limited to simple 3D primitives. By using the <Model/> Component we can place a ...
- HDOJ 5294 Tricks Device 最短路(记录路径)+最小割
最短路记录路径,同一时候求出最短的路径上最少要有多少条边, 然后用在最短路上的边又一次构图后求最小割. Tricks Device Time Limit: 2000/1000 MS (Java/Oth ...
- AJAX核心--XMLHttpRequest五步法
引言: AJAX=异步Javascript + XML,AJAX是一种用于创建高速动态网页的技术. 开门见山: 解读:AJAX使用XHTML和CSS为网页表示.DOM动态显示和交互,XML进行数据交换 ...
- Android中文API-ViewStub
ViewStub控件是一个不可见,0尺寸得惰性控件.当ViewStub控件设置可见,或者调用inflate(),并运行完毕之后,ViewStub所指定的layout资源就会被载入.这个ViewStub ...
- CentOS6.3升级GCC到GCC4.8.2
server上安装的GCC版本号过旧.已经不满足个人使用的版本号需求,故决定对其进行升级操作.由当前版本号3.4.6升级到4.8.2.然受权限制约.仅仅能安装到个人文件夹.因此假设您的server能够 ...
- 使用wpa_supplicant连接WIFI
让树莓派可以开机就连接制定的wifi, 可以通过wpa_supplicant来实现. 在 /etc/wpa_supplicant 下写一个配置文件: wpa_supplicant.conf 内容如下: ...