Qt 图片放大和缩小

来源:互联网 发布:中国五矿待遇知乎 编辑:程序博客网 时间:2024/06/03 23:01

1 使用scaled可以将图片放大,但是在缩小的时候只是清晰度变低了,图片显示的还是原来的大小。。。我使用的是栅格布局,用label显示的图片

缩小后设置label的大小? No need! imaglabel->setScaledContents(false);  // 这个比较重要 -- set false


//发生缩放
if(scaling_flag == 1)
{
imaglabel->setScaledContents(false);  //这个比较重要
//fprintf(stderr,"__________________________%f\n",m_scaling);
QImage* imgScaled = new QImage;
*imgScaled=mge.scaled(mge.width()*m_scaling,
mge.height()*m_scaling,
Qt::KeepAspectRatio);
mge = *imgScaled;
}

from: http://tieba.baidu.com/p/3168083598


2. Qt用如何显示图像

通常用QLabel显示图像,QLabel类有setPixmap()函数,可以用来显示图像。也可以直接用QPainter画出图像。

如果图像过大,直接用QLabel显示,将会出现有部分图像显示不出来,这时可以用Scroll Area部件。方法:将QLabel部件放到Scroll Area部件里面,将两个采用栅格布局,当图像超出了QLabel部件大小时,就会产生滑动杆,这样图像就可以都看到了。

3. 显示的方法

步骤:先打开一个图像;将图像文件加载进QImage对象中;再用QPixmap对象获得图像;最后用QLabel选择一个QPixmap图像对象显示。


from: http://www.cnblogs.com/Romi/archive/2012/03/14/2396533.html
 
label = new QLabel();  //1 use new, not directly 在界面拖动出来
//ui->label->resize(ppm->width(), ppm->height());
label->setPixmap(QPixmap::fromImage(*ppm)); //2
ui->scrollArea->setWidget(label);  //3