当前位置: 首页 > news >正文

网站做三层结构近期国内外重大新闻10条

网站做三层结构,近期国内外重大新闻10条,上海做网站品牌公司,版纳网站建设文章目录 前言QPainterPath 与 QPainter 的区别QPainterPath 的主要函数和成员成员函数构造函数和析构函数路径操作布尔运算几何计算 示例代码示例 1:绘制简单路径示例 2:使用布尔运算合并路径示例 3:计算路径长度和角度 更多用法... 总结 前…

文章目录

  • 前言
    • QPainterPath 与 QPainter 的区别
    • QPainterPath 的主要函数和成员
      • 成员函数
        • 构造函数和析构函数
        • 路径操作
        • 布尔运算
        • 几何计算
    • 示例代码
      • 示例 1:绘制简单路径
      • 示例 2:使用布尔运算合并路径
      • 示例 3:计算路径长度和角度
    • 更多用法...
  • 总结


前言

QPainterPath 是 Qt 中用于绘制复杂形状的类。它提供了一种矢量图形的表示方式,允许用户绘制直线、曲线、矩形、圆形等图形,并进行布尔运算(如联合、相交、差集等)。与 QPainter 配合使用时,QPainterPath 可以显著简化绘图操作,并提高绘图的灵活性和可维护性。本文将详细介绍 QPainterPath 的功能、常用方法,并通过示例代码展示其实际应用。


QPainterPath 与 QPainter 的区别

QPainter 是 Qt 的基本绘图类,用于在设备上进行绘图操作,如绘制线条、矩形、文本和图像等。QPainter 直接在目标设备(如窗口、小部件或图像)上进行绘图操作。

QPainterPath 则是一个路径类,用于定义复杂的路径。这些路径可以包含多种图形元素,如直线、曲线、矩形和椭圆等。QPainterPath 主要用来描述图形,而 QPainter 用来绘制这些描述的图形。使用 QPainterPath 可以先定义图形路径,然后通过 QPainter 将其绘制到目标设备上。

在使用QPainterPath把路径画完之后,我们需要使用QPainter的drawPath把路径画上去才行

QPainterPath 的主要函数和成员

成员函数

构造函数和析构函数
  • QPainterPath()

    作用:构造一个空的路径对象。

    参数:无。

    返回值:无。

  • QPainterPath(const QPointF &startPoint)

    作用:构造一个以 startPoint 为起点的路径对象。

    参数

    • startPoint:路径的起点。

    返回值:无。

  • ~QPainterPath()

    作用:析构函数,销毁路径对象。

    参数:无。

    返回值:无。

路径操作
  • void moveTo(const QPointF &point)

    作用:将路径的当前点移动到 point

    参数

    • point:新的当前点。

    返回值:无。

  • void lineTo(const QPointF &point)

    作用:从当前点绘制一条直线到 point

    参数

    • point:直线的终点。

    返回值:无。

  • void arcTo(const QRectF &rect, qreal startAngle, qreal arcLength)

    作用:绘制一个以 rect 为边界的圆弧,从 startAngle 开始,弧长为 arcLength

    参数

    • rect:圆弧的边界矩形。
    • startAngle:起始角度(以度为单位)。
    • arcLength:弧长(以度为单位)。

    返回值:无。

  • void cubicTo(const QPointF &ctrlPt1, const QPointF &ctrlPt2, const QPointF &endPt)

    作用:绘制一个三次贝塞尔曲线,从当前点到 endPt,使用 ctrlPt1ctrlPt2 作为控制点。

    参数

    • ctrlPt1:第一个控制点。
    • ctrlPt2:第二个控制点。
    • endPt:曲线的终点。

    返回值:无。

  • void quadTo(const QPointF &ctrlPt, const QPointF &endPt)

    作用:绘制一个二次贝塞尔曲线,从当前点到 endPt,使用 ctrlPt 作为控制点。

    参数

    • ctrlPt:控制点。
    • endPt:曲线的终点。

    返回值:无。

  • void addRect(const QRectF &rect)

    作用:向路径中添加一个矩形。

    参数

    • rect:矩形区域。

    返回值:无。

  • void addEllipse(const QRectF &rect)

    作用:向路径中添加一个椭圆。

    参数

    • rect:椭圆的边界矩形。

    返回值:无。

  • void addPath(const QPainterPath &path)

    作用:向当前路径中添加另一个路径。

    参数

    • path:要添加的路径。

    返回值:无。

  • void closeSubpath()

    作用:闭合当前子路径。

    参数:无。

    返回值:无。

布尔运算
  • QPainterPath united(const QPainterPath &other) const

    作用:返回当前路径和 other 路径的并集。

    参数

    • other:另一个路径。

    返回值:并集路径。

  • QPainterPath intersected(const QPainterPath &other) const

    作用:返回当前路径和 other 路径的交集。

    参数

    • other:另一个路径。

    返回值:交集路径。

  • QPainterPath subtracted(const QPainterPath &other) const

    作用:返回当前路径和 other 路径的差集。

    参数

    • other:另一个路径。

    返回值:差路径。

几何计算
  • QRectF boundingRect() const

    作用:返回路径的边界矩形。

    参数:无。

    返回值:边界矩形。

  • qreal length() const

    作用:返回路径的长度。

    参数:无。

    返回值:路径长度。

  • QPointF pointAtPercent(qreal t) const

    作用:返回路径中百分比 t 处的点。

    参数

    • t:路径长度的百分比(0 到 1 之间)。

    返回值:路径上的点。

  • qreal angleAtPercent(qreal t) const

    作用:返回路径中百分比 t 处的切线角度。

    参数

    • t:路径长度的百分比(0 到 1 之间)。

    返回值:切线角度。

示例代码

示例 1:绘制简单路径

以下示例展示了如何使用 QPainterPath 绘制一条简单的路径,包括直线和曲线:

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QPainterPath>class PathWidget : public QWidget {
protected:void paintEvent(QPaintEvent *event) override {QPainter painter(this);QPainterPath path;path.moveTo(50, 50);path.lineTo(150, 50);path.cubicTo(200, 0, 250, 100, 300, 50);painter.drawPath(path);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);PathWidget widget;widget.show();return app.exec();
}

示例 2:使用布尔运算合并路径

以下示例展示了如何使用 QPainterPath 的布尔运算来合并两个路径:

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QPainterPath>class BooleanPathWidget : public QWidget {
protected:void paintEvent(QPaintEvent *event) override {QPainter painter(this);QPainterPath path1;path1.addRect(50, 50, 100, 100);QPainterPath path2;path2.addEllipse(100, 100, 100, 100);QPainterPath unitedPath = path1.united(path2);painter.drawPath(unitedPath);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);BooleanPathWidget widget;widget.show();return app.exec();
}

示例 3:计算路径长度和角度

以下示例展示了如何计算 QPainterPath 的长度和特定百分比处的角度:

#include <QApplication>
#include <QWidget>
#include <QPainter>
#include <QPainterPath>
#include <QDebug>class LengthAngleWidget : public QWidget {
protected:void paintEvent(QPaintEvent *event) override {QPainter painter(this);QPainterPath path;path.moveTo(50, 50);path.lineTo(150, 50);path.cubicTo(200, 0, 250, 100, 300, 50);qreal length = path.length();qreal angle = path.angleAtPercent(0.5);qDebug() << "Pathlength:" << length;qDebug() << "Angle at 50%:" << angle;painter.drawPath(path);}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);LengthAngleWidget widget;widget.show();return app.exec();
}

更多用法…

在这里插入图片描述


总结

QPainterPath 提供了一种强大且灵活的方式来定义和操作路径。通过与 QPainter 配合使用,可以轻松绘制复杂的图形和进行几何运算。QPainterPath 支持多种图形元素和布尔运算,使其成为绘制和处理矢量图形的理想选择。通过本文的介绍和示例代码,读者可以更好地理解 QPainterPath 的使用方法及其在实际应用中的强大功能。

http://www.hkea.cn/news/495821/

相关文章:

  • 个人站长做哪些网站好seo优化设计
  • 小白学做搭建网站软文街官方网站
  • 网站模板 可做采集站市场营销咨询
  • 家居网站建设素材天眼查询个人信息
  • 杭州专业网站排名优化交换链接的例子
  • 网站建设和数据容量整合seo的培训课程
  • 深圳 网站制作 哪家百度搜索排名优化哪家好
  • 网站运营者网址发稿平台
  • 内蒙古网站制作公司拼多多网店代运营要多少费用
  • 免费网站建设协议baike seotl
  • 做网站的好处和坏处怎么创建自己的网址
  • 兰州新区城乡建设局网站seo sem是什么职位
  • 衡水网站制作公司自媒体软文发布平台
  • 东莞圆心科技网站开发网页搜索
  • 日照网站建设价格百度推广怎么优化关键词的质量
  • 竭诚网络网站建设开发百度搜索竞价推广
  • 浙江住房和城乡建设厅报名网站下拉关键词排名
  • 银川哪里做网站百度网址名称是什么
  • 合肥公司网站建设价格低西安网络科技公司排名
  • 怎么样建设个人网站企业文化建设
  • 如何知道网站有没有备案成都seo公司
  • wordpress 艺术主题南京网络优化公司有哪些
  • 贵阳网站备案百度网站优化方案
  • 单位网站建设论文怎么做竞价托管
  • 建筑公司网站有哪些谈谈自己对市场营销的理解
  • 做ppt音乐怎么下载网站企业培训课程有哪些
  • magento网站建设网站优化排名软件网站
  • 做生鲜食品最好的网站网络推广及销售
  • 销售管理系统需求分析长沙seo代理
  • 站长网站查询深圳百度关键字优化