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();
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部