Qt绘图事件: 坐标系统(平移 旋转 缩放 扭曲)讲解
ui界面

四个水平滑动块,拖动它们,分别实现平移 旋转 缩放 扭曲
效果

widget.h
#ifndef WIDGET_H
#define WIDGET_H#include
#include
#include
#include
namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;protected:void paintEvent(QPaintEvent *); //绘图事件
private slots:void on_SliderTranslate_sliderMoved(int position);void on_SliderRotate_sliderMoved(int position);void on_SliderScale_actionTriggered(int action);void on_sliderShear_actionTriggered(int action);
};#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}void Widget::paintEvent(QPaintEvent *){QPainter painter(this);QPen pen(QColor(Qt::black));QBrush brush(QColor(Qt::white));painter.setPen(pen);painter.setBrush(brush);painter.drawRect(QRect(0,0,width()*2/3,height()));brush.setColor(Qt::blue);painter.setBrush(brush);//平移 斜下方平移 参数:x轴平移 y轴平移painter.translate(ui->SliderTranslate->value(),ui->SliderTranslate->value());//旋转 坐标轴旋转painter.rotate(ui->SliderRotate->value());//缩放 0~3painter.scale(ui->SliderScale->value()/33.0, ui->SliderScale->value()/33.0);//扭曲 扭曲系数0~1painter.shear(ui->sliderShear->value()/99.0,ui->sliderShear->value()/99.0);painter.drawRect(0,0,100,100); //画100 * 100 的矩形
}
//以下四个函数对应slider的槽函数 都是数值改变更新绘图事件
void Widget::on_SliderTranslate_sliderMoved(int position)
{update();
}void Widget::on_SliderRotate_sliderMoved(int position)
{update();
}void Widget::on_SliderScale_actionTriggered(int action)
{update();
}void Widget::on_sliderShear_actionTriggered(int action)
{update();
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
