简述

关于简笔画的介绍很多,有动物、水果、蔬菜、交通工具等,通常会对绘制一步步进行拆分、组合。然后绘制为我们想要的结果。

下面来介绍另外的一个种类:昆虫类-卡通蚂蚁。

绘制

效果

具体的效果如下所示,我们可以再进行更好的完善。

源码

主要分为以下三部:

  • 绘制屁股
  • 绘制肚子
  • 绘制头部

注意:绘制的时候,由于各个部分的颜色不同,而且坐标不好定位,所以我们采用的图形覆盖的方式。

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之图形(简笔画-绘制卡通蚂蚁)的更多相关文章

  1. Qt之图形(简笔画-绘制漂亮的西瓜)

    简述 Summer is coming-我们呢,为大家准备了丰盛的佳果-西瓜,清爽解渴,甘味多汁. 一笔一划学简笔画,分分钟让你掌握一门新技能,下面我们来绘制一个"盛夏之王"-西瓜 ...

  2. QT 基本图形绘制

    QT 基本图形绘制 1.告诉绘制引擎一些东西 QPainter::Antialiasing 在可能的情况下,反锯齿       QPainter::TextAntialiasing 在可能的情况下,文 ...

  3. IOS 绘制基本图形( 画圆、画线、画圆弧、绘制三角形、绘制四边形)

    // 当自定义view第一次显示出来的时候就会调用drawRect方法- (void)drawRect:(CGRect)rect { // 1.获取上下文 CGContextRef ctx = UIG ...

  4. Qt之图形(绘制文本)

    简述 前面我们讲解了Qt图形的基本绘制,其中包括: 绘制文本.直线.直线.矩形.弧线.椭圆.多边形.图片,以及其它一些高级用法,比如:渐变.转换等. 本节我们来详细讲解文字的绘制.主要通过QPaint ...

  5. Qt之图形(QPainter的基本绘图)

    简述 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类. QPainter用来执行 ...

  6. Qt编写自定义控件8-动画按钮组控件

    前言 动画按钮组控件可以用来当做各种漂亮的导航条用,既可以设置成顶部底部+左侧右侧,还自带精美的滑动效果,还可以设置悬停滑动等各种颜色,原创作者雨田哥(QQ:3246214072),驰骋Qt控件界多年 ...

  7. Qt自定义控件之仪表盘2--QPaint绘制仪表盘

    0.前言 前面一篇文章写道了仪表盘的特点,实现了一个贴图的仪表盘,属于低配版本的仪表盘.    主要是有任何改动时候就需要重新设计图片,不能适配不同控件大小,即使让它自由拉伸,但仪表盘放大缩小时候显示 ...

  8. 借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制

    原文:借助Photoshop,Illustrator等设计软件进行WPF图形图像的绘制 本文所示例子是借助第三方设计软件,制作复杂的矢量图形,转成与XAML酷似的SVG,再转换成xaml而实现的. 这 ...

  9. GDI+绘制图形和画刷填充图形

    GDI+可以再Windows窗体应用程序中以编程方式绘制图形等. 可以在VS里新建项目-Windows窗体应用程序-建一个窗体.首先引入命名空间using System.Drawing.Imaging ...

随机推荐

  1. JSp获取到当前用户的全部session

    <%@page import="java.util.Enumeration"%> <% for (Enumeration<?> e = session ...

  2. 【BZOJ 1305】[CQOI2009]dance跳舞

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 男生和女生每个人都分身成两个节点 即x[1],x[2]和y[1],y[2] 然后如果i和j不相互喜欢 那么add(x[i][2],y ...

  3. Linux学习总结(17)——Linux新手必须学会的12个命令

    今天的用户可以根据自己的意愿选择是否使用作为Linux象征的命令行,确切的证明了Linux已经有了很大的发展.现在很多Linux发行版的图形用户界面已经非常强大,不再需要命令行. 但是命令行在Linu ...

  4. ZJU 2676 Network Wars

    Network Wars Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original I ...

  5. table的创建

    results为table的行信息 columnNames  是table列名 //创建并初始化table: table =new JTable(results,columNames); //设置ta ...

  6. Android动态加载字节码

    概述 面对App业务逻辑的频繁变更,如果每一次改变都对App进行一次升级,会降低App的用户体验,那么App进行模块化升级(这里与增量升级是不同的)是很好的解决方案,让用户在完全无感觉的情况下改变Ap ...

  7. HTML5简单进度环插件

    前几天做了一个进度条的插件.今天我用HTML5的arc做一个简单的进度环的插件. 代码演示 事实上非常easy的.相同,我们先用一个实例: 配置js代码 var setting = { id: &qu ...

  8. csdn第五届在线编程大赛-全然平方

    题目详情 给定整数区间[A,B]问当中有多少个全然平方数. 输入格式: 多组数据,包括两个正整数A,B 1<=A<=B<=2000000000. 输出格式: 每组数据输出一行包括一个 ...

  9. JDBC创建mysql连接池代码

    1.底层实现类(DBConnection) package JDBC.JDBCPool.MyJDBCPool; import java.sql.Connection; import java.sql. ...

  10. Android开发之AudioManager(音频管理器)具体解释

    AudioManager简单介绍: AudioManager类提供了訪问音量和振铃器mode控制. 使用Context.getSystemService(Context.AUDIO_SERVICE)来 ...