• Qt 自适应图片之scaled()函数详解


      如何在改变窗口组件的情况下改变窗口背景图片的大小,我们通常会使用Qt自带的scaled()函数;QImage、QPixmap等绘图设备类都提供scaled()函数。

      scaled()是一个重载函数,按照指定的宽和高,根据纵横比模式和转换模式从原有图像返回一个经过比例转换的图像,如果宽高为0,返回一个空图像
    所以,获取控件的改变后的宽高,就能设定图像转换的宽高转换比例,用scaled()的返回重新进行绘图即可自适应窗口,以下是个例子:

     1 void Widget::paintEvent(QPaintEvent *)  
     2 {  
     3   
     4     QImage img((unsigned char*)im.data,im.cols,  
     5                    im.rows,QImage::Format_RGB888);  
     6     QPainter painter(this);  
     7     if(0==flag)  
     8         painter.drawImage(0,0,nImg);  
     9     /* 
    10         一定要加标记位判断,控件在绘制之前的size为NULL, 
    11         所以scaled()返回值也为NULL,会提示nImg是空的 
    12     */  
    13     else if(1==flag)  
    14     {  
    15         nImg=img.scaled(width(),height());  
    16         painter.drawImage(0,0,nImg);  
    17     }  
    18 }

    备注:如果图片缩放比例较大,最好原始资源图片的分辨率高点,否则会在放大后,出现图片模糊。

  • 相关阅读:
    杂记
    asp.net preview 5 bug[转]
    jquery笔记
    北京互联网创业团队诚邀英才加盟
    伊瓜苏大瀑布
    log4net udp组件的应用
    Mock介绍
    自写的BackgroundWorker的学习例子
    RegexBuddy使用例子,及Visual Studio中正则使用的请教
    TestDriven.NET2.14.2190(not RTM) last update at 2008723
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/13748456.html
Copyright © 2020-2023  润新知