QImage 类的基本操作

一、显示方法(两种):第一种更佳

1、QImage转QPixmap,然后用QLabel::setPixmap()

1

2

3

4

5

6

7

image=new QImage("D:/Temp/XX.jpg");

 

pixmap=newQPixmap();

pixmap->convertFromImage(*image);

label=newQLabel(this);

label->setGeometry(100,0,1000,700);

label->setPixmap(*pixmap);

2、在paintEvent()中直接画

1

2

3

4

5

void MyWindow::paintEvent(QPaintEvent*)

{

QPainter paint(this);

paint.drawImage(0,0,*image);

}

二. 图像缩放

图像缩放采用scaled函数。函数原型

QImage QImage::scaled ( const QSize & size,Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationModetransformMode = Qt::FastTransformation ) const

使用方法如下,还是利用上面的img:

QImage* imgScaled = new QImage;
*imgScaled=img->scaled(width,
                       height,
                       Qt::KeepAspectRatio);
ui->label->setPixmap(QPixmap::fromImage(*imgScaled));

scaled函数中width和height表示缩放后图像的宽和高,即将原图像缩放到(width,height)大小。

三. 图像旋转

图像旋转可以利用QImage类的transformed函数,向transformed函数传入QMatrix对象,QMatrix对象指定了旋转的角度。

代码如下:

QImage* imgRatate = new QImage;
QMatrix matrix;
matrix.rotate(270);
*imgRotate = img->transformed(matrix);
ui->label->setPixmap(QPixmap::fromImage(*imgRotate));

注意:rotate函数中参数是旋转的角度,旋转是按顺时针方向旋转的,上面顺时针旋转270度,即逆时针旋转90度。

四. 图像连续缩放
有了图像缩放的基础,就可以实现图像的连续缩放,可以放置一个横向滑竿(中文解释不标准,就是Horizontal Slider部件 ),滑动滑轮的位置以实现图像连续缩放。

Horizontal Slider部件指向的值为整型value,即缩放后的图像为

img->scaled(orignalWidth*value/100,
                         orignalHeight*value/100,
                         Qt::KeepAspectRatio);

orignalWidth和orignalHeight为原始图像的宽和高。

注意:在对原始图像进行缩放多少倍数时,在相应的槽函数内只需要调用Horizontal Slider部件对象的setValue函数即可,因为Horizontal Slider部件滑竿指向的值一旦变化就会触发对应的槽函数来对图像进行缩放。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值