QPainter
fyzy
这个作者很懒,什么都没留下…
展开
-
QPixmap设置填充为transparent时debug和release不一样
最近在画图的时候发现 QPixmap在使用fill(Qt::transparent)时,debug模式下运行和release运行时一个背景是透明的,一个背景是黑色的。建议不要使用m_pixmap->fill(QColor(255, 250, 250));可以使用painter的fillRect函数,但是后面的画刷,还是使用自己定义的颜色。因为fillRect也有这个现象。建议使用 fillRect去填充背景painter.fillRect(-width()>>1..原创 2021-08-24 08:52:52 · 794 阅读 · 0 评论 -
QPainter Pixmap和widget联合画图
最近在使用双缓冲画图的时候,发现有一部分 不需要双缓冲。其实解决办法就是先双缓冲画图,剩下的直接画在widget上。h文件#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include<QPainter>#include<QPainterPath>#include<QDebug>#include<QKeyEvent>#include<QTi原创 2021-08-19 08:58:17 · 1054 阅读 · 0 评论 -
QPixmap设置尺寸
最近在使用双缓冲画图时,我需要动态调整pixmap的size。调整方法:初始化先设置一个size。m_pixmap = new QPixmap(ui->widget->size());重写 一下函数:void resizeEvent(QResizeEvent *event)void RHISpeedForm::resizeEvent(QResizeEvent *event){ if(m_pixmap) { delete m_p原创 2021-08-15 18:02:37 · 4627 阅读 · 0 评论 -
QPainter双缓冲机制
最近在画RHI的时候,发现需要保存上一次的QPainter画的内容,查资料发现双缓冲可以解决这个问题,特此记录一下。双缓冲机制其实就是先画在pixmap上,再画到widget上。双缓冲机制的使用场合:所需绘制的内容较复杂,并且需频繁刷新。 每次只需刷新整个控件的一小部分。...原创 2021-08-14 21:17:04 · 1125 阅读 · 0 评论 -
QPainter 扇形分段
核心代码:void MainWindow::paintEvent(QPaintEvent *){ QPainter painter(this); painter.translate(this->width()/2,this->height()/2); painter.setRenderHint(QPainter::Antialiasing, true); int r = this->width()/4 ; int angle = 30; .原创 2021-08-09 12:27:28 · 456 阅读 · 0 评论 -
QPainter 遮罩层 设置为窗口颜色
//画遮罩,遮罩颜色为窗口颜色painter.setBrush(palette().window().color());原创 2021-08-07 22:07:45 · 240 阅读 · 0 评论 -
Qt绘制扫描图
不多说直接上源码:1.头文件#ifndef UPGRADEFORM_H#define UPGRADEFORM_H#include <QWidget>#include<QPainter>#include"qmath.h"#include<QDebug>#include<QEvent>//namespace Ui {//class upgradeForm;//}#include<QTimer>#ifdef quc原创 2020-12-25 21:30:19 · 558 阅读 · 0 评论 -
Qt中update和repaint的区别
update()或repaint()被调用后会强制产生一个绘制事件。这两个函数的区别是:repaint()函数会强制产生一个即时的重绘事件,而update()函数则只是在Qt下一次处理事件时才简单地调用一个绘制事件。(如果窗口部件在屏幕上是透明的,那么这两个函数什么也不会做。)如果多次调用update(),Qt就会把连续的绘制事件压缩成一个单一的绘制事件,这样可以避免屏幕出现闪烁现象。使用频率:update()>repaint()。...原创 2020-06-08 17:18:11 · 1445 阅读 · 0 评论 -
Qt绘制简单的风向玫瑰图代码
1、绘制简单的风向玫瑰图代码2、主要使用QPainter3、在子widget上绘制需要使用widget监视事件 eventfilter update();//更新界面//镜头12 QPainter painter1(WindRose12)/**/; painter1.begin(WindRose12); painter1.setFont...原创 2020-01-06 13:21:38 · 823 阅读 · 0 评论 -
Qt在子部件上绘图
本文记录如何使用qpainter在子部件上绘图。1.需要在子部件上安装事件过滤器frame->installEventFilter(this); //安装事件过滤器到窗口2.头文件中声明如下bool eventFilter(QObject *watched, QEvent *event);bool m_flag=false;//绘图标志3.声明画图函数...原创 2019-12-16 16:26:54 · 1210 阅读 · 0 评论 -
Qt之渐变QLinearGradient、QRadialGradient、QConicalGradient
1、QLinearGradient线性渐变代码一及演示:void MainWindow::drawLine(QPainter *painter){ painter->save(); painter->setRenderHint(QPainter::Antialiasing,true); QLinearGradient Linear(100,100,...原创 2019-12-19 10:37:47 · 1710 阅读 · 1 评论 -
Qt☞之QPainterPath
QPainterPathQPainterPath类为绘画操作提供了一个容器,允许构造和重用图形形状。代码一加运算:void MainWindow::painterPathDemo(QPainter *painter){ painter->save(); QPainterPath path; path.moveTo(200,200); path....原创 2019-12-19 14:19:52 · 2331 阅读 · 0 评论 -
QPainter☞之 鼠标绘图
QPainter鼠标绘图要点1.使用drawPoint()函数2.记录上一次(鼠标)画的点的位置。上代码:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include<QPainter>#include<QMouseEvent>namespace U...原创 2019-12-23 15:39:45 · 771 阅读 · 0 评论 -
QPainter画箭头
画箭头需要注意:计算箭头两个线的位置和长度与直线或弧线间的位置关系。1.画直线箭头关键代码 const int length = 10;//箭头斜着的投影到线上的长度 QVector<QLineF> lines; lines.append(QLineF(20,height()/2,width()/2,height()/2)); li...原创 2019-12-24 11:32:55 · 5512 阅读 · 0 评论