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);
}

对于一般图形的绘制比较简单,因为常用、有规律,而且比较规则,像圆、椭圆、矩形、直线这些。如果存在各种复杂的图形那么用原生的绘制方案就很难实现了,需要消耗大量的时间来回折腾,所以这里就不再介绍了。

目录
相关文章
|
7月前
|
存储
QT图形视图框架绘制曲线图和Smith图
QT图形视图框架绘制曲线图和Smith图
129 0
|
7月前
|
数据可视化 图形学 开发者
【Qt 底层机制之图形渲染引擎】深入理解 Qt 的 渲染机制:从基础渲染到高级图形
【Qt 底层机制之图形渲染引擎】深入理解 Qt 的 渲染机制:从基础渲染到高级图形
1017 4
|
4月前
|
XML Linux C++
【Qt】图形化和纯代码实现Hello world的比较
【Qt】图形化和纯代码实现Hello world的比较
《QT从基础到进阶·二十六》绘制多个图形项(QGraphicsRectItem,QGraphicsLineItem,QGraphicsPolygonItem)
《QT从基础到进阶·二十六》绘制多个图形项(QGraphicsRectItem,QGraphicsLineItem,QGraphicsPolygonItem)
235 0
|
7月前
|
编解码 供应链 开发工具
英飞凌采用Qt图形解决方案增强Traveo T2G MCU系列,实现智能渲染技术
在竞争激烈的全球半导体市场,制造商一直在努力缩短产品上市时间。同时,他们对流畅、高分辨率图形显示器的需求也在日益增长。
|
7月前
|
数据可视化 计算机视觉
QT基础教程(图形处理)
QT基础教程(图形处理)
84 0
|
7月前
|
存储 数据可视化 测试技术
[Qt5] QGraphics图形视图框架概述(Item、Scene和View)
[Qt5] QGraphics图形视图框架概述(Item、Scene和View)
1233 0
|
缓存
《QT从基础到进阶·二十二》QGraphicsView显示大量图形项item导致界面卡顿的解决办法
《QT从基础到进阶·二十二》QGraphicsView显示大量图形项item导致界面卡顿的解决办法
653 0
QT图形视图系统 - 使用一个项目来学习QT的图形视图框架 - 终篇
接上一篇,我们需要继续完成以下的效果; 先上个效果图:
124 0
|
图形学 容器
QT5图形视图框架
GraphicsView (图形视图)框架结构取代了之前版本中的QCanvas模块,它提 供基于图元的模型/视图编程,类似于QtlnterView的模型/视图结构,只是这里的数据是图形。
135 0