ui界面
四个水平滑动块,拖动它们,分别实现平移 旋转 缩放 扭曲
效果
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPainter>
#include <QPen>
#include <QBrush>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
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~3
painter.scale(ui->SliderScale->value()/33.0, ui->SliderScale->value()/33.0);
//扭曲 扭曲系数0~1
painter.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();
}