Dust3D项目实训十一 | 基于silhouetteimaggenerator的图像轮廓绘制分析

本文介绍了轮廓图像生成器模块的工作原理及其实现细节,重点分析了如何利用QPainter类绘制关键点轮廓圆和点间连接路径,展示了高效的图形绘制方法。

2021SC@SDUSC

目录

分析概括

模块功能

QPainter类

void QPainter::drawEllipse(int x, int y, int width, int height)

QPainterPath类

关键代码分析

silhouetteimagegenerator.h分析

Snapshot类分析

SilhouetteImageGenerator类分析

silhouetteimagegenerator.cpp分析

generate()分析


分析概括

模块功能

silhouetteimaggenerator模块的主要功能在于通过输入的二维图像绘制关键点轮廓圆和点与点之间的连接关系,如下图中的昆虫绿色部分轮廓:

QPainter类

QPainter提供了高度优化的功能,可以完成GUI程序所需的大多数绘图。它可以绘制从简单的线条到复杂的形状(如馅饼和和弦)的所有内容。它还可以绘制对齐的文本和像素映射。

(QPainter类函数介绍:QPainter class |Qt GUI 5.15.7

1.开启抗锯齿(反走样)功能。

painter.setRenderHint(QPainter::Antialiasing, true);

2.绘制由以(x, y)开头的矩形定义的椭圆

void QPainter::drawEllipse(int x, int y, int width, int height)

3.其他绘图接口

drawPoint(), drawPoints() 画点,参数是QPoint对象。

drawLine(), drawLines() 绘制直线,参数是QLine对象。

drawRect(), drawRoundedRect(),drawRects()绘制矩形,后者为圆角矩形。参数为QRect对象。

drawArc() 绘制弧线,参数是QRect对象和起点终点角度。

drawPie() 绘制扇形,参数是QRect对象和起点终点角度。

drawChord() 绘制弦,参数是QRect对象和起点终点角度。

drawPolyline()绘制多点连接的线,参数是QPoints对象。

drawPolygon()绘制多边形,参数是QPoints对象。

drawConvexPolygon() 绘制凸多边形,参数是QPoints对象。

fillRect() 填充一个矩形,无边框线。参数是QRect对象和QBrush对象。

eraseRect() 擦除某个背景区域,显示窗体背景色。参数是QRect对象。

QPainterPath类

QPainterPath类提供了一个容器,用于绘图操作,可以创建和重用图形形状。QPainterPath是一个图形构建块的对象,如矩形、椭圆、直线和曲线。构建块可以加入在封闭的子路径中,例如:矩形或椭圆形。一个封闭的路径同时存在开始点和结束点。或者作为未封闭的子路径独立存在,如:直线和曲线。QPainterPath可以进行填充、显示轮廓和裁剪。要生成可填充的轮廓的绘图路径,可以使用QPainterPathStroker类。QPainterPath比正常绘制的主要优点在于:复杂的图形只需创建一次,然后可以仅仅通过调用QPainter::drawPath()函数来进行多次绘制。

关键代码分析

silhouetteimagegenerator.h分析

Snapshot类分析

class Snapshot
{
public:
    std::map<QString, QString> canvas;画布
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值