1 涂鸦板函数
就是事先设置画板,经过画图Qpainter 进行图形绘制,而后根据鼠标的轨迹进行绘制Point 而后调用upate进行图形更新从而实现涂鸦板ui
2 讲解源码 this
#include "mainwindow.h"
#include "ui_mainwindow.h"get
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);源码
resize(600,500);
pix=QPixmap(200,200);
pix.fill(Qt::white);
scale=1;it
//放大按钮
btn=new QPushButton(this);
btn->setText(tr("scale"));event
//按钮位置
btn->move(500,450);ast
//槽机制消息
QObject::connect(btn,SIGNAL(clicked(bool)),this,SLOT(ZooIn()));
}cli
MainWindow::~MainWindow()
{
delete ui;
}date
void MainWindow::paintEvent(QPaintEvent *){
//pix 在头文件中定义 pix的大小就是板子的大小
QPainter paint(&pix);
paint.drawLine(lastpoint,endpoint);
lastpoint=endpoint;
QPainter paint2(this);
// 改变大小 是经过 update 中 调用 paintEvent函数实现图形更新的
paint2.scale(scale,scale);
paint2.drawPixmap(0,0,pix);
}
void MainWindow::mousePressEvent(QMouseEvent *event){
if(event->button()==Qt::LeftButton)
lastpoint=event->pos();
endpoint=lastpoint;
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event){
if(event->button()==Qt::LeftButton)
{
endpoint=event->pos();
update();
}
}
void MainWindow::mouseMoveEvent(QMouseEvent *event){
if(event->buttons()&Qt::LeftButton)
{
endpoint=event->pos();
update();
}
}
//消息处理 void MainWindow::ZooIn(){ scale*=2; update(); }