QPainter学习(一)——绘制函数记录

QPainter保存与恢复:save与restore函数浅析 在Qt中进行图像绘制,需要用到QPainter对象,这个对象可以帮助我们完成一些简单功能的绘制,比如说绘制线条,绘制折线等简单的绘制功能。 QPainter对象,有两个很有意思的函数,这两个函数相互之间起作用,下面,我们就来看一下这两个函数,save函数与restore函数。 painter->save();//保存当前Painter状态 transform.translate(m_point.x(), m_point.y()); //沿着x坐标系移动第一个变量,沿着y 阅读详情

目录

前言

需要用Qt显示视频,所以需要对QPainter了解。详细参见Qt之图形(QPainter的基本绘图)

QPainter函数介绍

绘图系统由QPainter完成具体的绘制操作,QPainter类提供了大量高度优化的函数来完成GUI所需要的大部分工作。它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,例如:点、线、矩形、弧形等。QPainter也支持一些高级特性,例如反走样。

  • setRenderHint()
  • setPen()
painter.setPen(QPen(QColor(0, 160, 230), 2));

设置画笔颜色

  • setBrush()
    设置画刷颜色,可以在画矩形的时候,填充矩形的颜色。
  • drawPixmap()
painter.drawPixmap(rect(), QPixmap(":/Images/logo"));

我们可以在资源文件中添加logo文件然后显示,也可以把图片放置在可执行程序的目录下,执行的时候就可以找到这个文件了。
- setFont

// 设置字体:微软雅黑、点大小50、斜体
QFont font;
// 设置字体属性
font.setFamily("Microsoft YaHei");
font.setPointSize(50);   
font.setItalic(true);    // 斜体
painter.setFont(font);   // 
  • drawText
    其实电脑上所有的东西都是绘制出来的,也就是所有的文字都是绘制出来的。

代码

  • main.cpp
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}
  • mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QPainter>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::paintEvent(QPaintEvent * event)
{
    //painter in MainWindow
    QPainter painter(this);
    painter.setPen(Qt::green);
    painter.drawLine(50, 50, 500, 50);
    painter.drawLine(QPoint(20, 30), QPoint(20, 400));

// 这里如果我们把画刷设置为白色,然后绘制整个区域,就会把以前绘制的都覆盖掉
//    painter.setBrush(Qt::white);
//    painter.drawRect(this->rect());

    painter.setBrush(Qt::blue);
    painter.drawRect(20, 20, 50, 50);
    painter.setBrush(Qt::yellow);
    painter.drawRect(80, 20, 50, 50);

    painter.setBrush(QBrush(Qt::red));
    painter.drawEllipse(QPoint(120, 120), 40, 30);

    QPixmap pix("0.bmp");
    painter.drawPixmap(200, 80, pix);

    QFont font;
    font.setFamily("黑体");
    font.setPointSize(22);
    painter.setFont(font);

    // change painter color
    painter.setPen(QPen(Qt::red));
    painter.drawText(200, 40, "Hello World");
}
  • mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    void paintEvent(QPaintEvent *);
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

总结

其实这一篇非常简单,但是总是要写完整些!有些强迫症!学习!分享!感谢!

Qt—QPainter基本图形绘制详解 1、QPainter 类在小部件和其他绘制设备上执行低级绘制。2、QPainter 提供了高度优化的功能来完成大多数图形GUI程序所需的工作。它可以画从简单的线条到复杂的形状。它还可以绘制对齐的文本和像素图。QPainter 可以对继承 QPaintDevice 类的任何对象进行操作。3、QPainter 与 QPaintDevice 和 QPaintEngine 类一起构成了Qt绘制系统的基础:QPainter 是用于执行绘图操作的类。QPaintDevice 表示可以使用 QPainter 在其上绘制的 阅读详情

相关推荐

Qt学习记录(九)QPainter

以Qt Widgets Application为模板建立项目,widget.h中添加绘图事件 /*widget.h*/ //添加绘图事件 void paintEvent(QPaintEvent *event); widget.cpp中做具体实现 void Widget::paintEvent(QPaintEvent *event) { //创建画家 QPainter painter(this); //创建画笔 QPen pen(QColor(0,255,0));

weixin_42700438的博客 706

QPainter主要功能说明与使用

QPainter绘图的说明与使用;图形视图结构解析

m0_68731112的博客 706

9.3.1 QPainter相关函数介绍(1)

9.3 QPainter图形绘制 Qt绘图主要用到QPainter类,QPainter类提供了许多高度优化的函数去做大部分的GUI绘制工作。它可以画简单的线到复杂的形状,通常情况下,QPainter是在widget的painter绘图事件函数中使用。绘图的设备通常是主部件,也可以是QLabel部件或QTextEdit部件,通过一定的算法实现可以绘制出很漂亮的图形或我们需要的图形。 绘制时需要先定义一个QPainter类对象,绘制可以选择Qpen(画笔)、QBrush(画刷)。使用QPen写文本时还可以指

699

QT之QPainter用法

QPainter可以绘制从简单的直线到像饼图和弦这样的复杂形状。它也可以绘制排列的文本和像素映射。通常,它在一个“自然的”坐标系统中绘制。 QPainter 一般在部件的绘图事件 paintEvent() 中进行绘制,首先创建 QPainter 对象,然后进行图形的绘制,最后记得销毁 QPainter 对象。当窗口程序需要升级或者重新绘制时,调用此成员函数。使用 repaint()和 update() 后,调用函数 paintEvent()。 绘图工具的用法,简单的几个步骤: 1.构造一个绘图工具

sono_io的博客 1万+

Qt 学习笔记-中秋节,QPainter画一颗小心心送给你

前言对于程序员来说,中秋节也是一个程序,想把中秋节过好,更想把程序写好,中秋节,QPainter一颗小心心送给你。简介 QPainter类在小部件和其他绘图设备上执行低级绘...

李肖遥的专栏 678

【NIFI】实现HANA->ORACLE数据同步

实现 HANA->ORACLE数据同步。

weixin_43159039的博客 1510

QPainter之绘制鼠标路径(画笔工具)

文章目录前言一、事件重写二、记录坐标1.定义成员,以记录坐标位置2.加入坐标3.绘画点数组感谢各位的阅读。 前言 绘制简单的直线、矩形、椭圆等就不介绍了,毕竟那种东西就一个函数就能解决的问题,无非就是一些抗锯齿之类的细节,大家自行百度相关函数即可。 提示:本篇直接讲绘任意图——画笔工具 一、事件重写 想要绘图,得知道落笔的位置,而这里不再教大家如何创建笔了,就拿基本QPen绘图。 bool event(QEvent *event) override; 为了方便,上面就写一个总事件函数。 二、记录

世界和平 2738

发那科机器人抓手与物料搬运阀的配置与优化实践

本文详细介绍了发那科机器人抓手与物料搬运阀的配置与优化实践,包括基础配置指南、阀岛与输入模块的详细设置、测试程序编写与验证技巧,以及常见问题排查与性能优化建议。通过实际案例和经验分享,帮助技术人员快速掌握关键配置步骤,提升物料搬运系统的稳定性和效率。

weixin_33738555的博客 385

Qt 之 QPainter

画笔,绘图,绘图设备 层次结构 层次 类 说明 1 QPainter 画笔 2 QPainterEngine 翻译QPainter的指令 3 QPaintDevice 画板 Qt 的绘图系统实际上是,使用QPainter在QPainterDevice上进行绘制,它们之间使用QPaintEngine进行通讯(也就是翻译QPainter的指令)。 ...

wjjontheway的专栏 2359

在 CentOS Stream 10 上搭建 Kubernetes 集群并支持开发调试与日志查看

搭建 Kubernetes 集群的每个步骤详细的文档。

灵犀物润 1644

3款 433MHz 收发模块对比:SYN480R vs RXB6 vs DL-TX19,实测卷帘门遥控距离

本文深度评测了3款433MHz收发模块SYN480R、RXB6与DL-TX19在卷帘门遥控距离、穿透性能和抗干扰能力等方面的表现。通过实测数据对比,分析了超外差、超再生和PLL锁相环技术的优劣,为智能家居和工业控制领域的无线遥控方案选型提供专业参考。

weixin_30700977的博客 395

QPainter绘制图片填充方式(正常大小、剪切大小、自适应大小、平铺)

Qt中QPainter提供了绘制图像的API,极大地方便了我们对图像的绘制。 Qt中提供了QPixmap, QBitmap,QBitMapQImage,QPicture等图像绘图设备,它们的类关系如下图所示: QPixmap继承了QPaintDevice,您可用以建立QPainter并于上进行绘图,您也可以直接指定图案加载Qt所支持的图档,像是BMP、GIF、JPG、JPEG、PNG等,并...

weixin_30437337的博客 1822

Xilinx Vitis arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument

This problem may be a bugof version 2021.1 only. Unfortunately, I'm just currently using this version. After Build Project: Find where this Makefile is through "make: Leaving directory" information. For me, it is located atZynq_CPU_wrapper_hw_platfo...

Ayka的博客 6662

Qt QPainter 完全指南:从画线到绘制复杂图形

本文介绍了Qt中QPainter的核心原理与应用实践。QPainter作为Qt的2D绘图引擎,采用画家模型设计,通过状态机管理绘制属性,支持坐标变换、裁剪、混合模式等高级功能。文章详细解析了QPainter的绘制流程、坐标系统、基本图形绘制方法(线条、矩形、文本等),以及QPainterPath、Transform等高级特性。同时深入剖析了Qt绘图系统的三层架构(QPainter-QPaintDevice-QPaintEngine)和双缓冲机制。最后通过一个完整的仪表盘控件示例,展示了如何利用QPainte

红军不怕远征难,万水千山只等闲 659

从SolidWorks到URDF:插件使用、关节配置与PyBullet仿真避坑指南

本文提供了一份从SolidWorks导出URDF模型并导入PyBullet进行仿真的完整实战指南。详细讲解了SolidWorks插件的正确安装与配置、关节类型的选择与坐标系对齐的核心技巧,并针对PyBullet仿真中常见的模型散架、路径错误、物理属性异常等问题提供了深度避坑解决方案,帮助机器人开发者高效完成从设计到仿真的全流程。

weixin_29081101的博客 544

企业微信API实战:解密external_userid的跨应用一致性管理

本文深入探讨企业微信API中external_userid的跨应用一致性管理问题,解析其本质及在不同应用场景下的ID不一致挑战。通过ID转换与统一管理方案,结合unionid实现跨应用客户数据整合,提供实战代码示例和架构设计,助力企业构建高效的客户管理系统。

weixin_29258297的博客 637

如何使用QPainter绘制大量地图节点

最近在写一个项目的时候,涉及到如何实现一个地图的展示。虽然使用API可以更加便捷展示这一效果,但使用的毕竟是别人写好的程序。 一、寻找需要使用的地图节点 二、将这个图片放在你需要绘制地图的地方 三、采用一个鼠标事件的函数 void MainWindow::mousePressEvent(QMouseEvent *e) { if(e->button()==Qt::LeftButt...

Yaynnbio的博客 1526

量子密钥分发(QKD)原理、工程实现与实战部署全解析

密钥分发是信息安全的核心基础,它解决了通信双方如何安全共享秘密密钥的难题。传统方法依赖于数学问题的计算复杂性,而量子密钥分发(QKD)则基于量子力学原理,为密钥分发提供了信息论安全的物理保障。其核心价值在于,利用量子不可克隆定理和测量坍缩原理,使得任何窃听行为都会被合法通信方检测到,从而在理论上实现无条件安全的密钥协商。这项技术特别适用于对安全性要求极高的场景,如金融数据同步、政务专网和电力系统保护。本文聚焦于量子保密通信,深入剖析了以BB84协议为代表的QKD工作原理,并详细拆解了包含单光子探测、偏振编码

weixin_29324401的博客 348

qt 调用qpainter_Qt 中QPainter 使用中出现的问题

这两天在使用QPainter的过程中出现了一些问题,记录一下。测试程序很简单,写一个继承自QWidget的类,重载其paintEvent函数进行绘图。case1:在paintEvent函数中使用一个临时的painter对象进行绘制。结果:能够正常绘制。case2:在paintEvent函数中动态分配一个painter对象进行绘制。结果:能够正常绘制。case3:将Painter声明为一个类的成员变...

weixin_39633054的博客 943

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

QT-QPainter介绍

介绍 可以在QPaintDevice类上绘制各种图形 QPaintDevice类表示QPainter的绘图设备(画布) QpaintDevice子类有QImage、QOpenGLPaintDevice、QWidget 等 所以, QPainter可以在QImage、QOpenGLPaintDevice、QWidget上进行绘制图形 QPainter只能在类对象的paintEvent()函...

cai_huan_123的专栏 4426

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Qt】2D基本绘图操作——QPainter执行绘制及绘图设备介绍

【Qt】2D基本绘图操作——QPainter执行绘制及绘图设备介绍

sinat_41752325的博客 1364

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

QPainter、QPen、QBrush,绘图、填充、渐变等使用方法

QPen是画笔,用来绘制图形的轮廓线,以及定义轮廓线的颜色、样式和属性; QBrush是画刷,用来填充封闭图形,以及定义填充的颜色、样式和属性; QPainter是画家,他要使用画笔QPen和画刷QBrush,在画布(QPaintDevice)上画文字、图形、图片等。 可以充当画布(QPaintDevice)的类(其子类)有:QWidget,QImage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, and Q.

野生猿-群号1025127672 1万+

汽车仪表盘源码学习记录(QPainter)

学习了b站老实的徐码农的汽车仪表盘的源码 进行了部分总结

weixin_51883798的博客 1044

Qt使用Qpainter绘制并调用QPrinter打印

Qt使用Qpainter绘制并调用QPrinter打印

qianniulaoren的博客 1609

PyQt 使用QPainter绘制雷达扫描效果源码分享

本文详细介绍了PyQt6中的QPainter绘图工具,涵盖基础概念到高级应用。主要内容包括: QPainter基础:核心绘图类,支持在多种设备(如QWidget、QPixmap等)上绘制图形、文本和图像,使用笛卡尔坐标系系统。 基本绘图操作:演示如何绘制基本图形(矩形、椭圆、直线等)、文本(单行/多行、格式化)和图像(包括缩放和部分绘制)。 画笔与画刷:详解QPen(控制轮廓样式)和QBrush(控制填充样式)的使用,包括纯色、渐变、纹理和图案填充。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 1634

Qt:玩转QPainter序列一

是一个宏,用于声明一个指向该类的私有数据指针d_ptr。这是Qt中常用的一个设计模式,用来实现Pimpl(Pointer to Implementation)技术,分离接口和实现,增强封装性。Q_GADGET是一个用于声明轻量级的Qt对象的宏。虽然它不像QObject那样支持信号和槽,但它可以使用元对象系统的其他功能,比如枚举的元信息。

m0_71489826的博客 1274
上一篇: Qt事件处理(四)——重写event()函数
下一篇: Qt小程序(六)-IconEditor
simonXi-tech
博客等级 码龄10年 398粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值