qt 加载 图片旋转_QT之旅--- 08图片加载 缩放 旋转 扭曲

这篇博客介绍了如何使用QT进行图像操作,包括加载图片、缩放、90度旋转以及横向扭曲。通过QPainter和QPixmap类,展示了具体的代码实现,便于读者理解并应用到自己的QT项目中。
摘要由CSDN通过智能技术生成

1 基本知识‘

QPainter  paint(this);//绘图设备

QPixmap pix;//图像工具类

pix.load("E:\\Qt_Projects\\build-Demo18-Desktop_Qt_5_10_1_MSVC2013_64bit-Debug\\debug\\imges\\logo.png");

paint.drawPixmap(0,0,100,100,pix);

//    //缩放

//获取原先的图片大小

//    qreal width=pix.width();

//    qreal height=pix.height();

//设置缩放倍数

//    pix.scaled(width*0.2,height*0.2,Qt::KeepAspectRatio);

//旋转

paint.translate(40,50);

//旋转角度大小

paint.rotate(90);

paint.translate(-40,-50);

paint.drawPixmap(100,100,80,100,pix);

//扭曲

paint.shear(0.5, 0); //横向扭曲

paint.drawPixmap(100, 0, 80, 100, pix);

2 代码

#include "mainwindow.h"

#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :

QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

}

MainWindow::~MainWindow()

{

delete ui;

}

void  MainWindow::paintEvent(QPaintEvent *){

//设置字体样式 绘制文本  并将文本放于矩形中

//    QPainter  painter(this);

//    QRectF rect(50,50,300,200);

//    QFont   font("宋体",16,QFont::Bold,true);

//    font.setUnderline(true);

//    font.setOverline(true);

//    font.setCapitalization(QFont::SmallCaps);

//    font.setLetterSpacing(QFont::AbsoluteSpacing,10);

//    painter.setFont(font);

//    painter.drawRect(rect);

//    painter.setPen(Qt::red);

//    painter.drawText(rect,Qt::AlignCenter,"Welcome use QT");

//   绘制路径

//    QPainterPath path;

//    path.addRect(50,50,40,40);

//    path.moveTo(QPointF(90,90));

//    path.lineTo(200,200);

//    QPainter  paint(this );

//    paint.drawPath(path);

//显示图片  后缩放图片

//显示

QPainter  paint(this);

QPixmap pix;

pix.load("E:\\Qt_Projects\\build-Demo18-Desktop_Qt_5_10_1_MSVC2013_64bit-Debug\\debug\\imges\\logo.png");

paint.drawPixmap(0,0,100,100,pix);

//    //缩放

//    qreal width=pix.width();

//    qreal height=pix.height();

//    pix.scaled(width*0.2,height*0.2,Qt::KeepAspectRatio);

//    paint.drawPixmap(80,80,pix);

//旋转图片

paint.translate(40,50);

paint.rotate(90);

paint.translate(-40,-50);

paint.drawPixmap(100,100,80,100,pix);

paint.shear(0.5, 0); //横向扭曲

paint.drawPixmap(100, 0, 80, 100, pix);

}

demo 18 路径:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值