QT学习之QImage::scaled

本文介绍了在QT中如何使用QImage的scaled()函数来调整图片大小以适应控件尺寸,通过设置不同的纵横比和转换模式实现图片的自适应显示。

QT中图片的比例变换,为了适应控件的大小,采用QImage、QPixmap等绘图设备类提供的scaled()函数,下面是Qt文档对于scaled()函数介绍:

函数原型:

QImage QImage::scaled ( int width, int height,  Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio,  Qt::TransformationMode transformMode = Qt::FastTransformation ) const  

This is an overloaded function.

Returns a copy of the image scaled to a rectangle with the given width and height according to the given AspectRatioMode and TransformMode.

If either the width or the height is zero or negative, this function returns a null image.

这是一个重载函数,按照指定的宽和高,根据纵横比(Aspect Ratio)模式和转换模式从原有图像返回一个经过比例转换的图像,如果宽高为0,返回一个空图像

所以,获取控件的改变后的宽高,就能设定图像转换的宽高转换比例,用scaled()的返回重新进行绘图即可自适应窗口。

其中:

纵横比:一个物体的水平宽度除以垂直高度所得比例值,或一个物体的垂直高度除以水平宽度所得的比例值。纵横比,即一个图像的宽度除以它的高度所得的比例,通常表示为 "x:y" or "x×y",其中的冒号和叉号表示中文的“比”之意。目前,在电影工业中最常被使用的是 anamorphic 比例(即 2.39:1)[1]。传统的 4:3(1.33:1)仍然被使用于现今的许多电视画面上,而它成功的后继规格 16:9(1.78:1)则被用于高清晰度电视和欧洲的数位电视上。QImage中有三种选择,如图所示。

转换模式:

例如:


 QImage _image;
      _image.load(tab1_image);
      ui->tab->setAutoFillBackground(true);   // 这个属性一定要设置
      QPalette pal;
      pal.setBrush(QPalette::Background, QBrush(_image.scaled(ui->tab->size(), Qt::IgnoreAspectRatio)));
      ui->tab->setPalette(pal);
 

 

转载于:https://www.cnblogs.com/qixianyu/p/6891054.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值