#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>
#include <QMouseEvent>
#include <QRectF>
bool IsDrawing;
QRectF Rectf;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
bool bl = pic.load(tr("E:\\QT\\Test\\Tuya\\IMG_5627.jpg"),0);
map1 = QPixmap(400,400);
map1.fill(Qt::white);
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow:: paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.drawImage(QPointF(0.0f,0.0f),pic);
//map2.fill(Qt::white);
if(IsDrawing)
{
map2 = map1;
QPainter temp(&map2);
temp.drawRect(Rectf);
painter.drawPixmap(0,0,map2);
}else
{
QPainter temp(&map1);
temp.drawRect(Rectf);
painter.drawPixmap(0,0,map1);
}
}
int flag_L = 0;
void MainWindow:: mousePressEvent(QMouseEvent *event)
{
if(event->button() & Qt::LeftButton)
{
flag_L = 1;
Rectf.setX(event->x());
Rectf.setY(event->y());
IsDrawing = 1;
}
// pic.setPixel();
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() & Qt::LeftButton)
{
flag_L = 0;
IsDrawing = 0;
Rectf.setWidth(event->x() - Rectf.x());
Rectf.setHeight(event->y() - Rectf.y());
update();
}
}
void MainWindow:: mouseMoveEvent(QMouseEvent *event)
{
int p_x = event->x();
int p_y = event->y();
if(flag_L)
{
pic.setPixel(p_x, p_y,0x00000);
IsDrawing = 1;
Rectf.setWidth(event->x() - Rectf.x());
Rectf.setHeight(event->y() - Rectf.y());
update();
}
}
Qt Creator 做的涂鸦板 + 矩形绘图
4星 · 超过85%的资源 需积分: 31 186 浏览量
2011-07-20
10:18:36
上传
评论 2
收藏 2.07MB RAR 举报
yzzzfree
- 粉丝: 7
- 资源: 5
最新资源
- Flume进阶-自定义拦截器jar包
- Dubins曲线算法讲解和在运动规划中的使用.pdf
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
- 时代的sdddsddsddsd
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈