Qt—QPainter基本图形绘制详解

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

QPainter描述

1、QPainter 类在小部件和其他绘制设备上执行低级绘制。

2、QPainter 提供了高度优化的功能来完成大多数图形GUI程序所需的工作。它可以画从简单的线条到复杂的形状。它还可以绘制对齐的文本和像素图。QPainter 可以对继承 QPaintDevice 类的任何对象进行操作。

3、QPainter 与 QPaintDevice 和 QPaintEngine 类一起构成了Qt绘制系统的基础:

  • QPainter 是用于执行绘图操作的类。

  • QPaintDevice 表示可以使用 QPainter 在其上绘制的设备。

  • QPaintEngine 提供了一个接口,QPainter 可以使用这个接口来绘制不同类型的设备。

项目示例

在右边可以选择绘图样式,左边显示对应的样式效果

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档
qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

绘图区

新建类PaintArea,基类QWidget,作为绘制图形区域。其成员有:

m_shape用于记录绘图样式,例如绘制线或者绘制矩形;m_pen用于记录画笔样式;m_brush用于记录画刷样式,m_fillrule用于记录填充规则。

当左端控制区发生样式改变时,将对应的样式属性传递给PaintArea类对应的成员,然后调用update( )方法重绘窗体来实现绘图区样式的改变。这就需要我们重写printEvent( )方法,来实现绘制自己需要的图形。

PaintArea类构造函数中,设置背景颜色为白色,以及固定大小

控制区样式改变时,将对应的样式属性传递给PaintArea类的对应成员

重写paintEvent( )方法,在函数中根据m_shape图片类型调用对应的绘图函数。

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

控制区

控制区就是我们的主窗口类,类名为MainWidget,基类QWidget。将上面我们自定义的PaintArea类作为主窗口类的成员,成员名为m_paintArea。

画笔颜色

当点击"更改"按钮时弹出一个颜色对话框,将用户选择的颜色显示在中间QFrame部件中,同时更改绘图区边框颜色

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

在初始化函数中初始化QFrame的颜色,以及按钮的槽方法连接。tr可以使该显示的文本能够被翻译。

ShowPenColor( )槽方法

在该槽方法中,我们首先获得QFrame部件的颜色,作为打开颜色对话框时的初始颜色,接着从其他样式选项框中获取和画笔样式有关的值。调用PaintArea类的setPen( ) 方法设置画笔样式。

  • 获得部件颜色:QColor color = 部件名称->palette( ).color(QPalette : :Window);参数QPalette::Window表示获得该部件的窗体颜色

  • 获得组合框选中的值:首先调用组合框的currentIndex( )方法获得组合框当前选中值的索引,再调用组合框的itemData(int index).toInt( ),传入索引,并且将返回值转换成int类型,再强转成对应的样式枚举值。

绘制形状

形状选取是一个组合框部件,在初始换函数中将可选取的值添加到组合框中.

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

在初始化函数中,向组合框添加形状条目,这里我们又将能绘制的形状单独在PaintArea类中用枚举类型声明了一下

ShowShape(int)槽方法

在该槽方法中,我们获取形状组合框选取的值,再调用PaintArea类的setShape( )方法设置形状.

线宽

设置线宽我们采用一个QSpinBox部件来实现,设置取值范围为1到20。

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

初始化函数

ShowPenWidth( int)槽方法

槽方法可以直接获取到更改的笔宽值

画笔风格

画笔风格的选择是一个组合框,我们可以选择不同的风格,例如实线(SolidLine)、点线(DotLine)或者其他样式,也可以选择自定义的DashLine。

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

不同的画笔风格对应的效果大致如下

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

画笔风格的实现代码与画笔颜色大致相同:首先在初始化函数中向组合框添加可选项,再将组合框的信号与槽方法连接。在槽方法中需要注意的是需要设置自定义的DashLine的样式。

初始化函数

ShowPenStyle(int)槽方法

在槽方法中需要设置自定义的DashLine样式

笔帽风格

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

不同的笔帽风格对应的样式如下

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

释义:

  • Qt::SquareCap 方形线端,不覆盖线的端点

  • Qt::FlatCap 方形线端,覆盖线的端点,并以线框一半向外延伸

  • Qt::RoundCap 圆线端

初始化函数

ShowPenStyle(int)槽方法

连接点样式

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

不同的连接点样式对应的效果如下

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

释义:

  • Qt::BevelJoin 两条线相汇形成方形连接

  • Qt::MiterJoin 两条线相汇形成尖角连接

  • Qt::RoundJoin两条线相汇形成圆角连接

初始化函数

ShowPenJoin(int)槽方法

填充模式

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

不同的填充模式对应的效果如下

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档
qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

Qt::OddEvenFill填充规则:从图形中某一点画一条水平线到图形外,若这条线与图形边线的交点为奇数则说明此点位于图形的内部;若交点为偶数,则此点在图形的外部。

Qt::WindingFill填充规则:从图形总某一点画一条水平线到图形外,每个交点外边线方向可能向上、向下、方向相反的相互抵消,若结果不为0表此点在图形内,若为0则在图形外。其中边线的方向是由QPainterPath创建时根据描述的顺序决定的,如果采用addRect()或addPolygon()等函数加入的图形默认为顺时针方向。

初始化函数

ShowFileRule(int)槽方法

铺展效果

不同的铺展样式效果如下

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

初始化函数

ShowSpread(int)槽方法

m_brushSpread是一个QGradient : :Spread类型,用来记录选择的铺展效果。之后调用ShowBrushStyle( int )槽方法来改变样式效果

画刷风格

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

不同的画刷风格效果如下

qpainter,QT,C/C++,qt,开发语言,c++,windows,Powered by 金山文档

初始化函数

ShowBrushStyle(int)槽方法

画刷风格中有几种样式需要特别设置参数,例如QLineGradient就需要设置渐变区域和渐变色

追风赶月莫停留,平芜尽处是春山!文章来源地址https://www.toymoban.com/news/detail-783690.html

到了这里,关于Qt—QPainter基本图形绘制详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 《QT从基础到进阶·十五》用鼠标绘制矩形(QGraphicsView、QPainter、QGraphicsRectItem)

    以下是鼠标绘制矩形最全的一种用法,完整源码将会放在最后面。 QT版本:5.15.2 VS版本:2019 1、在界面加载一张图片 界面的搭建选用QGraphicsView,自定义类GraphicsView继承QGraphicsView,在主程序中点击按钮打开 图片,相关代码如下: 2、创建矩形绘制对象,并绘制、移动矩形 在

    2024年02月04日
    浏览(51)
  • 【嵌入式Qt开发入门】如何使用Qt进行绘图——QPainter 绘图

            绘图与图表在嵌入式里有的比较多,尤其是图表,我们常在股票里看到的“图表折线/曲线 图/饼状图等”都可以用 Qt 的图表来实现。绘图和图表的内容本章主要介绍绘图和图表的基本操作,以简单的例子呈现绘图与图表的用法,目的就是快速入门绘图与图表,关

    2024年02月12日
    浏览(48)
  • QT窗体绘图QPainter

    QPainter INSCODE AI 创作助手: QPainter是Qt中的一个类,用于在窗口、图像或其他用户界面上绘制图形和文本。它提供了一些方便的方法来画线、矩形、圆、多边形和文本 QPainter绘图函数 INSCODE AI 创作助手: QPainter是Qt中一个用于绘图的类,它提供了一系列的绘图函数。以下是一些

    2024年02月05日
    浏览(39)
  • Qt QPainter

    QPainter需要在QPaintEvent中绘画 绘画需要笔 QPainter QPaintEvent QPen 建立painter之后就可以绘画,pen这些都有默认实现 画家必须传递this指针才能激活。     圆用椭圆画 重新绘画只需要重新加入画笔就可以 painter.setPen(pen); // 重新设置画笔 抗锯齿能力---setRenderHint 画出来的远见更加光

    2024年02月09日
    浏览(36)
  • QT(QPainter画圆弧)

    本篇文章给大家介绍一下如何使用QPainter来画圆弧。 drawArc() 函数是 Qt 绘图类库中的一个函数,用于在画布上绘制圆弧。可以通过设置起点角度和圆弧弧度来控制圆弧的绘制效果。 函数原型如下: 其中,参数 x 和 y 指定圆弧所在矩形的左上角坐标,参数 width 和 height 分别指定

    2024年02月15日
    浏览(34)
  • Qt学习06:QPainter绘画

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

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

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

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

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

    2024年02月16日
    浏览(37)
  • 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日
    浏览(34)
  • Qt鼠标拖动绘制基本几何图形

    用Qt鼠标事件实现基本几何图形的绘制,支持直线、矩形、圆形、椭圆。后期可以在此基础上进行扩展。 效果图 实现 本示例使用QGraphics体系来实现,因为要移动对象,所以生成的图形必须是一个单独的对象,鼠标拖动绘制的过程是在临时层中完成,release后生成一个矢量的图

    2024年02月13日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包