Qt实现图像自适应窗口大小之scaled()函数使用
来源:互联网 发布:板材套料软件 编辑:程序博客网 时间:2024/06/05 04:50
很多应用都需要显示图片,比如视频类应用、拍照类应用,但是在大数情况下用户都会改变窗口大小,
以获得最佳效果,在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.
翻译:这是一个重载函数,按照指定的宽和高,根据纵横比模式和转换模式从原有图像返回一个经过比例转换的图像,如果宽高为0,返回一个空图像
所以,获取控件的改变后的宽高,就能设定图像转换的宽高转换比例,用scaled()的返回重新进行绘图即可自适应窗口,以下是个例子:
void Widget::paintEvent(QPaintEvent *){ QImage img((unsigned char*)im.data,im.cols, im.rows,QImage::Format_RGB888); QPainter painter(this); if(0==flag) painter.drawImage(0,0,nImg); /* 一定要加标记位判断,控件在绘制之前的size为NULL, 所以scaled()返回值也为NULL,会提示nImg是空的 */ else if(1==flag) { nImg=img.scaled(width(),height()); painter.drawImage(0,0,nImg); }}
Ps:
图像是按比例变化的,如果放大很多,会出现模糊等现象
- Qt实现图像自适应窗口大小之scaled()函数使用
- Qt实现图像自适应窗口大小之scaled()函数使用
- Qt自适应图片之scaled()函数详解
- Qt图片自适应窗口控件大小
- Qt基础——自适应窗口大小
- Qt图片自适应窗口控件大小
- Qt图片自适应窗口控件大小
- Qt图片自适应窗口控件大小
- QT5.8使用opencv打开图像窗口大小根据图像自适应调节
- JavaScript实现自适应窗口大小的网页
- 图片大小自适应QImage::scaled ()
- 使用JQuery控制iframe自适应窗口大小
- Qt之图片自适应QLabel的大小
- Qt Creator 窗体控件自适应窗口大小布局
- Qt Creator 窗体控件自适应窗口大小布局
- Qt Creator 窗体控件自适应窗口大小布局
- Qt Creator 窗体控件自适应窗口大小布局
- Qt Creator 窗体控件自适应窗口大小布局
- CS0016: 未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\.。。”--“拒绝访问
- spring mvc 实现网站登录与非登录的控制
- 压缩、解压缩(tar/zip/bzip2/gz/gzip/zip)
- Android之ImageSwitcher
- 为自定义工具栏按钮添加消息响应函数
- Qt实现图像自适应窗口大小之scaled()函数使用
- 浅谈java异常[Exception]
- linux使用dd命令快速生成大文件
- android实现断点续传
- 非专业游戏开发团队失败经验谈
- Kinect传感器的硬件组成
- UNICODE与ANSI编码的字符间的相互转换
- Kinect的“三只眼”—投影机和两个摄像头
- 如何在SpringMVC中获取request对象