QT(QPainter画圆弧)

这篇具有很好参考价值的文章主要介绍了QT(QPainter画圆弧)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本篇文章给大家介绍一下如何使用QPainter来画圆弧。

一、QPainter画圆弧方法

drawArc() 函数是 Qt 绘图类库中的一个函数,用于在画布上绘制圆弧。可以通过设置起点角度和圆弧弧度来控制圆弧的绘制效果。

函数原型如下:

void QPainter::drawArc(int x, int y, int width, int height, int startAngle, int spanAngle);

其中,参数 x 和 y 指定圆弧所在矩形的左上角坐标,参数 width 和 height 分别指定圆弧所在矩形的宽度和高度。参数 startAngle 指定圆弧的起始角度,单位为度,范围是从 0 到 360。参数 spanAngle 指定圆弧的弧度,也是以度为单位的,范围是负数表示逆时针旋转,正数表示顺时针旋转。

需要注意的是,Qt 中的角度单位是以 1/16 度为单位的,因此在设置起始角度和弧度时需要将角度值乘以 16。

二、使用示例

这里画了一个起始角度为0,圆弧弧度为150的圆弧。

void Widget::paintEvent(QPaintEvent* event)
{
    QPainter painter(this);
    QPen pen;
    pen.setColor(Qt::green);
    painter.setPen(pen);

    painter.translate(width() / 2, height() / 2);

    QRect rect(-height() / 4, -height() / 4, height() / 2, height() / 2);

    painter.drawArc(rect, 0 * 16, 150 * 16);
}

效果:
qpainter画圆,QT基础教学,qt,c++,开发语言
同样的起始角度和旋转角度也可以指定负数角度值:
在QT中角度是如下分布的:
qpainter画圆,QT基础教学,qt,c++,开发语言
当 spanAngle > 0 时,表示顺时针旋转;当 spanAngle < 0 时,表示逆时针旋转。spanAngle 的单位同样是 角度(degree),其取值范围不受任何限制。

画一个圆:
使用画圆弧的方法画一个圆形还是非常简单的,只需要起始角度和旋转角度之间相差360°即可。

    QPainter painter(this);
    QPen pen;
    pen.setColor(Qt::green);
    painter.setPen(pen);

    painter.translate(width() / 2, height() / 2);

    QRect rect(-height() / 4, -height() / 4, height() / 2, height() / 2);

    painter.drawArc(rect, 0 * 16, 360 * 16);

效果:
qpainter画圆,QT基础教学,qt,c++,开发语言

三、画一个彩色环

首先我们先来绘制一个外环:
笔的大小设置为20。

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    QPen pen;
    pen.setColor(Qt::green);
    pen.setWidth(20);
    painter.setPen(pen);

    painter.translate(width() / 2, height() / 2);

    QRect rect(-height() / 4, -height() / 4, height() / 2, height() / 2);

    painter.drawArc(rect, 0 * 16, 360 * 16);

效果:

qpainter画圆,QT基础教学,qt,c++,开发语言
笔的大小设置为20后外面和里面的间隔各自占了10:
qpainter画圆,QT基础教学,qt,c++,开发语言
画出一个圆环后面的就不难了:

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    QPen pen;
    pen.setColor(Qt::green);
    pen.setWidth(20);
    painter.setPen(pen);

    painter.translate(width() / 2, height() / 2);

    QRect rect(-height() / 4, -height() / 4, height() / 2, height() / 2);
    painter.drawArc(rect, 0 * 16, 360 * 16);

    pen.setColor(Qt::red);
    painter.setPen(pen);
    QRect rect1(-height() / 4 + 20, -height() / 4 + 20, height() / 2 - 40, height() / 2 - 40);
    painter.drawArc(rect1, 0 * 16, 360 * 16);

    pen.setColor(Qt::blue);
    painter.setPen(pen);
    QRect rect2(-height() / 4 + 40, -height() / 4 + 40, height() / 2 - 80, height() / 2 - 80);
    painter.drawArc(rect2, 0 * 16, 360 * 16);

运行效果:

这样我们就实现了彩色环了:
qpainter画圆,QT基础教学,qt,c++,开发语言

总结

QPainter画圆弧进行画圆弧时要注意的就是起始角度和旋转的角度。希望大家多多支持,后续将带来更多QPainter的用法。文章来源地址https://www.toymoban.com/news/detail-606616.html

到了这里,关于QT(QPainter画圆弧)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt学习06:QPainter绘画

    文章首发于我的个人博客:欢迎大佬们来逛逛 完整Qt学习项目地址:源码地址 Paint System Qt的绘制系统支持在屏幕和打印设备上使用相同的API进行绘制,主要基于QPainter、QPaintDevice和QPaintEngine类。 QPainter用于执行绘图操作,QPaintDevice是二维空间的抽象,可以使用QPainter在其上绘

    2024年02月08日
    浏览(24)
  • Qt绘制曲线图(基于qt画图QPainter)

    在没有QCharst模块时,可以使用QPainter自定义绘制曲线折线图 下面提供完整代码供参考: 直接在qt创建一个QMainWindow类的app的工程,不自动生成ui文件,然后把下面代码复制到mainwindow.cpp编译运行即可。 mainwindow.cpp: //博客:booinon //https://blog.csdn.net/boonion?spm=1011.2415.3001.5343

    2024年02月11日
    浏览(36)
  • Qt—QPainter基本图形绘制详解

    1、QPainter 类在小部件和其他绘制设备上执行低级绘制。 2、QPainter 提供了高度优化的功能来完成大多数图形GUI程序所需的工作。它可以画从简单的线条到复杂的形状。它还可以绘制对齐的文本和像素图。QPainter 可以对继承 QPaintDevice 类的任何对象进行操作。 3、QPainter 与 QPai

    2024年02月02日
    浏览(30)
  • Vc - Qt - QPainter translate

    QPainter的translate()函数是用来对绘制坐标系统进行平移操作的方法。它可以将绘制的原点(坐标轴的起始点)在水平和垂直方向上进行平移。以下是一个使用QPainter的translate()方法进行坐标平移的示例代码: 在这个示例中,首先创建一个QPainter对象,并通过this参数指定绘制的目

    2024年02月14日
    浏览(29)
  • qt QPainter 实现图片的缩放和平移

    头文件 CPP lable 不是必要的,设置好关键的2个值最重要

    2024年02月16日
    浏览(26)
  • Qt 事件过滤器使用QPainter绘制温度

    Qt的 eventFilter 是一个事件过滤器,可以用来捕获和处理Qt对象的事件。事件过滤器可以被安装到一个对象上,以便在该对象上拦截和处理包含特定类型和内容的事件。下面是 eventFilter 的简单使用介绍: 创建一个类,并继承自 QObject 。这个类将作为事件过滤器的实现。 在该类

    2024年02月12日
    浏览(27)
  • Qt之QPainter绘制多个矩形/圆形(含源码+注释)

    下图绘制的是矩形对象,但是将绘制矩形函数(drawRect)更改为绘制圆形(drawEllipse)即可绘制圆形。 绘制矩形需要自然要获取矩形数据,因此通过鼠标事件获取每个矩形的rect数据(鼠标按下为起始点,鼠标释放为结束点;每次移动时的当前位置做结束点,并实时刷新,实现

    2023年04月25日
    浏览(92)
  • Qt关于QPainter绘制1px宽度图形带来的问题思考

    前段时间遇到这样一个问题,使用QPainter绘制直线的时候,设置了笔宽为1像素,但是绘制出来的线条却是2px宽度,而且设置的画笔颜色很明显是降低了透明度,不是最“纯正”的颜色。 当时就感觉非常奇怪,明明设置的画笔宽度是正常的,为啥绘制出来不是自己想要的样子。

    2023年04月20日
    浏览(30)
  • QT GUI代码大全(MainWindow, QFile, QPainter, QGraphicsItem/Scene/View)

    QMainWindow(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()) void setCentralWidget(QWidget *widget); //set the given widget to the main window’s central widget void setFixedSize(int w, int h); //set the size of the widget void setWindowIcon(QIcon(QString filepath)); QMenuBar *QMainWindow::menuBar() const 返回MainWindow的menu bar //c

    2024年02月03日
    浏览(27)
  • PyQt5桌面应用开发(16):定制化控件-QPainter绘图

    PyQt5桌面应用开发(1):需求分析 PyQt5桌面应用开发(2):事件循环 PyQt5桌面应用开发(3):并行设计 PyQt5桌面应用开发(4):界面设计 PyQt5桌面应用开发(5):对话框 PyQt5桌面应用开发(6):文件对话框 PyQt5桌面应用开发(7):文本编辑+语法高亮与行号 PyQt5桌面应用开

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包