Qt QPainter

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

QPainter需要在QPaintEvent中绘画

绘画需要笔

绘画需要的基础头文件

QPainter

QPaintEvent

QPen

QPainter

建立painter之后就可以绘画,pen这些都有默认实现

Qt QPainter

画家必须要激活才能绘画

Qt QPainter

画家必须传递this指针才能激活。 

Qt QPainter

 文章来源地址https://www.toymoban.com/news/detail-494322.html

可画设备

圆用椭圆画

重新绘画

重新绘画只需要重新加入画笔就可以

painter.setPen(pen); // 重新设置画笔

painter高级设置

抗锯齿能力---setRenderHint

画出来的远见更加光滑,但是影响程序效率

    painter.drawEllipse(QPoint(100,100),50,50);
    painter.setRenderHint(QPainter::HighQualityAntialiasing);
    painter.drawEllipse(QPoint(200,200),50,50);

Qt QPainter

 移动画家位置---translate()----(实际上移动坐标原点)

    painter.drawRect(QRect(200,200,200,200));
    painter.translate(50,50);
    painter.drawRect(QRect(200,200,200,200));

Qt QPainter 保存和释放画家状态

Qt QPainter

 更新绘图事件

update()

update会自动调用paintEvent()函数,从小绘图。

rotate---顺时针旋转坐标系

注意:

1,坐标围绕原点旋转,需要使用translate将原点移动到旋转中心。

2,rotate只对调用rotate之后绘制的图形有旋转作用。

物体绕着中心原点自转

   

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

    // 绘制正方形
    QRectF rect(0, 0, 100, 100);
    painter.drawRect(rect);

物体自转

//设置旋转中心
    painter.translate(width()/2,height()/2);
    painter.rotate(m_angle);
    painter.drawEllipse(QPoint(0,0),50,25);

将图形的旋转中心设置到原点,图形就会绕着原点旋转,如果图形的旋转中心是自己的中心,就会自转。

paintEvent

系统自动调用。

Brush

brush是什么

就是对painter绘制出来的封闭图形进行颜色填充,粉刷。

    QBrush brush(QColor("#ffa400"));
    //brush.setColor(QColor("#ffa400"));
    painter.setBrush(brush);
    painter.drawRect(20,20,100,100);

注意:如果brush的brushStyle为No Brush,则表示这个brush为不粉刷模式,粉刷没有作用。

Qt QPainter

如果使用无参构造函数,表示建立黑色粉刷笔,并且不会粉刷,不会填充形状。

painter取消粉刷

painter.setBrush(Qt::NoBrush);

 怎么获取屏幕中心位置:

painter.drawEllipse(QPoint((this->width())/2,(this->height())/2),100,100);

QPainterPath

函数

QPainter::QPainter(QPaintDevice *device)

device指定在哪个对象绘画

Qt颜色

Qt::中也有

绘图设备

绘图的几种类的比较

Qt QPainter

为什么可以在QWidget上绘图

Qt QPainter

在屏幕中心画一个十字架

Qt QPainter

void MainWindow::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    painter.setPen(Qt::green);

    painter.drawLine(rect().center()+QPoint{0,5},rect().center()+QPoint{0,20});
    painter.drawLine(rect().center()+QPoint{5,0},rect().center()+QPoint{20,0});
    painter.drawLine(rect().center()+QPoint{0,-5},rect().center()+QPoint{0,-20});
    painter.drawLine(rect().center()+QPoint{-5,0},rect().center()+QPoint{-20,0});
}

 

 

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

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

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

相关文章

  • 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开发入门】如何使用Qt进行绘图——QPainter 绘图

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

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

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

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

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

    2023年04月20日
    浏览(30)
  • 《QT从基础到进阶·十五》用鼠标绘制矩形(QGraphicsView、QPainter、QGraphicsRectItem)

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

    2024年02月04日
    浏览(41)
  • 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)
  • 你需要联机才能在此设备上打开此项。要在脱机时在此设备上打开此项,请转到“Microsoft Store 设置”页中的“脱机权限”设置。你可以在下次联机时更改此设置。

    在评论区第一条看到的解决方法 微软商店及xbox应用提示【你需要联机才能在此设备上打开此项。】或【文件系统错误12002】问题解决方法_网络游戏热门视频 (bilibili.com) 打开新游戏等半天然后提示未联网的,可以试试在host文件里添加以下几条: 124.108.22.138 licensing.mp.microsoft

    2024年01月25日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包