Qt图像缩放、旋转

今天需要将QLabel显示的图像进行缩放旋转,同时图像显示过大时可以使用鼠标拖动来显示图像遮盖部分,鼠标滚轮也可以放大缩小图像。不过拖动部分还没有完成,以QLabel中心点的缩放旋转正常,鼠标滚轮缩小也没问题,放大就出了点问题,现在先来记录一下思路,后续再慢慢完善。

1、旋转部分

四个旋转角度:0、90、180、270,左旋90和右旋180是同一角度(右旋90和左旋180也是同一角度),定义一个rotateAngle变量保存当前旋转的角度,这样不管左旋操作还是右旋操作,下一下旋转的角度都可以轻松计算出来。接下来是如何实现图像的旋转,

一种方式是使用QMatrix:

    QMatrix matrix;
    matrix.rotate(90);
    pixmap = pixmap.transformed(matrix, Qt::SmoothTransformation);

但是这样的话旋转中心是改不了的(我暂时不知道如何改变)。

另一种方式是使用QPainter:

    QPainter painter(&src);
    QMatrix matrix;
    matrix.rotate(90);
    pixmap = pixmap.transformed(matrix, Qt::SmoothTransformation);
    QPoint point;   
    //通过旋转中心计算绘制起始点
    ..........................
    painter.drawPixmap(point, pixmap);

2、缩放部分

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值