Qt 绘图(QBitmap,QPixmap,QImage,QPicture)
- QPainter绘图绘图设备(QPixmap,QImage,QBitmap,QPicture)
- 重写绘图事件,虚函数
- 如果窗口绘图,必须放在绘图事件里实现
- 绘图事件内部自动调用,窗口需要重绘的时候,状态改变
- QPixmap图片背景透明,针对屏幕进行优化了,和平台相关,不能对图片进行修改
- QImage 和平台无关,可以对图片进行修改,在线程中绘图
- QPicture 保存绘图 的状态(二进制文件)
- pixmap.save("../pixmap.png"); 保存图片
- setWindowFlags(Qt::FramelessWindowHint | windowFlags());去除边框
- setAttribute(Qt::WA_TranslucentBackground);设置透明
QPainter
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); protected:
void paintEvent(QPaintEvent *event); private slots:
void on_pushButton_clicked(); private:
Ui::Widget *ui;
int x=;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QPen>
#include <QBrush>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
} Widget::~Widget()
{
delete ui;
} void Widget::paintEvent(QPaintEvent *event)
{
//QPainter p(this);
QPainter p;//创建画家对象
p.begin(this);//指定当前窗口为绘图设备
//画背景图
//p.drawPixmap(0,0, width(), height(), QPixmap("../Image/bk.png"));
//p.drawPixmap(rect(),QPixmap("../Image/bk.png")); //定义画笔
QPen pen;
pen.setWidth();//设置线宽
pen.setColor(QColor(,,));//rgb
pen.setStyle(Qt::DashDotDotLine); QBrush brush;
brush.setColor(Qt::red);
brush.setStyle(Qt::Dense1Pattern); //p.setPen(pen);
p.setBrush(brush);
//画直线
p.drawLine(,,,);
p.drawLine(, ,, ); //画矩形
p.drawRect(x,,,); p.drawEllipse(QPoint(,),,); p.drawPixmap(x,,,,QPixmap("../Image/face.png")); p.end();
} void Widget::on_pushButton_clicked()
{
x += ;
if(x>width())
{
x = ;
}
update();
}
QBitmap
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); protected:
void paintEvent(QPaintEvent *event); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QBitmap>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
} Widget::~Widget()
{
delete ui;
} void Widget::paintEvent(QPaintEvent *event)
{
QPainter p(this);
//QPixmap图片背景透明
p.drawPixmap(,,QPixmap("../Image/butterfly.png"));
//QBitmap
p.drawPixmap(,, QBitmap("../Image/butterfly.png"));
//QPixmap 图片背景白色
QPixmap pixmap;
pixmap.load("../Image/butterfly1.png");
}
QPixmap
#ifndef WIDGET_H
#define WIDGET_H #include <QWidget> namespace Ui {
class Widget;
} class Widget : public QWidget
{
Q_OBJECT public:
explicit Widget(QWidget *parent = );
~Widget(); private:
Ui::Widget *ui;
}; #endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QPixmap pixmap(, );
QPainter p(&pixmap);
p.fillRect(,,,,QBrush(Qt::white)); pixmap.fill(Qt::white);
p.drawPixmap(,,,,QPixmap("../Image/face.png")); //保存图片
pixmap.save("../pixmap.png");
} Widget::~Widget()
{
delete ui;
}
QImage
#include "widget.h"
#include "ui_widget.h"
#include <QPainter> Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); QImage image(,,QImage::Format_ARGB32);
QPainter p;
p.begin(&image); p.drawLine(,,,); for(int i=;i<;i++)
{
for(int j=;j<;j++)
{
image.setPixel(QPoint(i,j),qRgb(,,)); }
}
p.end(); image.save("../image.png");
} Widget::~Widget()
{
delete ui;
}
QPicture
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QPicture>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
QPicture picture;
QPainter p;
p.begin(&picture);
p.drawLine(,,,);
p.end(); picture.save("../picture.png");
} Widget::~Widget()
{
delete ui;
} void Widget::paintEvent(QPaintEvent *event)
{
// QPicture pic;
// pic.load("../picture.png");
QPainter p(this);
// p.drawPicture(0,0,pic); QPixmap pixmap;
pixmap.load("../Image/face.png");
QImage tempImage = pixmap.toImage();
p.drawImage(,, tempImage); QImage image;
image.load("../Image/face.png");
QPixmap tempPixmap = QPixmap::fromImage(image);
}
窗口透明
#include "widget.h"
#include "ui_widget.h"
#include <QPainter>
#include <QMouseEvent>
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint | windowFlags()); setAttribute(Qt::WA_TranslucentBackground);
} Widget::~Widget()
{
delete ui;
} void Widget::paintEvent(QPaintEvent *event)
{
QPainter p(this);
p.drawLine(,,,);
} void Widget::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::RightButton)
{
close();
qDebug()<<"close";
}
else if(event->button() == Qt::LeftButton)
{
p = event->globalPos() - this->frameGeometry().topLeft();
qDebug()<<"left";
}
} void Widget::mouseMoveEvent(QMouseEvent *event)
{
if(event->button() & Qt::LeftButton)
{
move(event->globalPos()-p);
}
}
Qt 绘图(QBitmap,QPixmap,QImage,QPicture)的更多相关文章
- Qt笔记——绘图(QBitmap,QPixmap,QImage,QPicture)
QPainter绘图 重写绘图事件,虚函数 如果窗口绘图,必须放在绘图事件里实现 绘图事件内部自动调用,窗口需要重绘的时候,状态改变 绘图设备(QPixmap,QImage,QBitmap,QPict ...
- (十一)QPainter绘图, QPixmap,QImage,QPicture,QBitmap
#include "widget.h" #include "ui_widget.h" #include <QPainter> #include &l ...
- [Qt2D绘图]-05绘图设备-QPixmap&&QBitmap&&QImage&&QPicture
这篇笔记记录的是QPainterDevice(绘图设备,可以理解为一个画板) 大纲: 绘图设备相关的类:QPixmap QBitmap QImage QPicture QPixmap ...
- Qt 编程指南10 QImage Mat QPixmap转换
//示例 pushButtonOpenPicBig按钮clicked单击动作触发 void Qt_Window::on_pushButtonOpenPicBig_clicked() { strin ...
- 界面编程之QT绘图和绘图设备20180728
/*******************************************************************************************/ 一.绘图 整 ...
- Qt 绘图与动画系统
Qt 提供了内置的绘图系统以及独立的QtOpenGL模块提供对OpenGL的支持.Qt提供了基于状态机的QPainter系统和面向对象的Graphics View系统. QPainter 基于状态机的 ...
- Qt——绘图
1.涉及类 QPainter QPaintEngine QPaintDevice 作为绘图的使用者,只需要关注 QPainter 和 QPaintDevice 2.QPainter 使用 QPain ...
- Qt: 绘图基础(非常简洁明了,全面)
QPainter 能绘制: point, line, rectangle, ellipse, arc, chord, polygon, pie segment, Bezier curve, QPixm ...
- QPixmap,QImage图片大小缩放linux版
注意事项: 1.装载图片的地址有时候会读取不到.可以多摸索一下当前系统对应的格式. 2.scaled缩放方式选择 3.注意保存路径.下面程序保存路径是当前执行文件目录中. PicOpera::PicO ...
随机推荐
- PHP jdtogregorian() 函数
------------恢复内容开始------------ 实例 把格利高里历法的日期转换为儒略日计数,然后再转换回格利高里历法的日期: <?php$jd=gregoriantojd(6,20 ...
- PHP is_readable() 函数
定义和用法 is_readable() 函数检查指定的文件是否可读. 如果文件可读,该函数返回 TRUE. 语法 is_readable(file) 参数 描述 file 必需.规定要检查的文件. 提 ...
- 牛客练习赛63 牛牛的树行棋 差分 树上博弈 sg函数
LINK:牛牛的树行棋 本来是不打算写题解的. 不过具体思考 还是有一段时间的. 看完题 一直想转换到阶梯NIM的模型上 转换失败. 考虑SG函数. 容易发现 SG函数\(sg_x=max{sg_{t ...
- ZROI 提高十连测 DAY2
总结:入题尽量快,想到做法要先证明是否正确是否有不合法的情况,是否和题目中描述的情景一模一样. 不要慌 反正慌也拿不了多少分,多分析题目的性质如果不把题目的性质分析出来的话,暴力也非常的难写,有 ...
- [转] SpringBoot返回json 数据以及数据封装
作者:武哥 来源:武哥聊编程 https://mp.weixin.qq.com/s/QZk0sKxBX4QZiCTHQIA6pg 1. Spring Boot关于Json的知识点 在项目开 ...
- 虹软人脸识别—版本升级接口修改说明(C#)
自虹软发布了免费.离线版本人脸识别SDK,在Github上陆续分享了各个版本对应的 C# Demo.因为公司项目一直在使用虹软的SDK,因此每当虹软官网有新版本发布,我都会进行了解,并结合Demo进行 ...
- resultMap的用法以及关联结果集映射
resultType resultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致. 如果sql查询到的字段与pojo的属性名不一致,则需要使用res ...
- Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)
前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...
- Kubeflow实战: 入门介绍与部署实践
更多内容关注专辑: 机器学习实战 1 介绍 Kubeflow是在k8s平台之上针对机器学习的开发.训练.优化.部署.管理的工具集合,内部集成的方式融合机器学习中的很多领域的开源项目,比如Jupyter ...
- Java入门到实践系列(2)——Java环境搭建
一.上集回顾 在<Java入门到实践系列(1)--Java简介>中提到过,Java程序是运行在Java虚拟机的,也展示过下面这张图. JDK:Java程序开发工具包. JRE:Java运行 ...