QImage与QPixmap加载图片效果(QImage不能拉伸图片,QPixmap默认拉伸图片)
PixmapTest::PixmapTest(QWidget *parent) : QDialog(parent)
{
this->setWindowTitle("deal picture");
//表达1 此种情况也等同于不写 只有重新设置图片大小的时候才需要 eg:表达3
//QPixmap pixmap;
//pixmap.load("Picture.JPG");
//表达2 样式表方法 只能填充部分
this->setObjectName("myframe");
this->setStyleSheet("QFrame#myframe{border-image:url(Picture.JPG)}" );
this->setAutoFillBackground(true);
//表达3 根据图片的大小来设定界面
//QPixmap pixmap;
//pixmap.load("Picture.JPG");
//resize(pixmap.size());
//表达4 palette方法 填充整个界面 会出现一个界面里有多张图片的效果
//QPixmap pixmap("Picture.JPG");
//QPalette palette;
//palette.setBrush(this->backgroundRole(),QBrush(pixmap));
//this->setPalette(palette);
}
void PixmapTest::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0, 0, QPixmap("Picture.JPG"));
}
表达1、2运行效果如下:

表达3的运行效果如下:

表达4:运行效果

============================================================================================
其中以下方法(Qlabel),也可以达到表达1、2的效果
PixmapTest::PixmapTest(QWidget *parent) : QDialog(parent)
{
this->setWindowTitle("deal picture");
QPixmap pixmap;
pixmap.load("Picture.JPG");
label = new QLabel(this);
label->setPixmap(pixmap);
}
============================================================================================
以上几种情况图片大小和界面大小都不是很匹配,有没有方法让图片自动扩展到整个界面呢?
PixmapTest::PixmapTest(QWidget *parent) : QDialog(parent)
{
this->setFixedSize(640,480);
this->setWindowTitle("deal picture");
}
void PixmapTest::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPixmap pix;
// 1 、2两句可以任选一句 也就是说QPixmap在load图片时,实际上就是将QImage转化为QPixmap过程
pix.load("Picture.JPG"); // 1
//pix = pix.fromImage(image);// 2
painter.drawPixmap(0, 0, 640, 480, pix);
}
运行效果如下:

但是如果paintEvent中的方法换为:
void PixmapTest::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QImage image;
image.load("Picture.JPG");
painter.drawImage(0, 0, image, 0, 0, 640, 480); //注意大小仍然是界面大小哦
}
效果会如何呢?

【综述】从上面可以看出QImage在加载图片时,图片不会根据界面的大小而改变,也就是说我们不能根据界面来拉伸和压缩图片;
然而QPixmap在默认情况下,大小即为图片大小,但是它可以拉伸和压缩图片。。。
============================================================================================
但是QPixmap和QImage在效果上有什么区别呢?
void PixmapTest::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QImage image;
image.load("Picture.JPG");
painter.drawImage(0, 0, image, 0, 0, 320, 480);//坐标(0,0),图片大小为(320,480)
QPixmap pix;
pix.load("Picture.JPG");
//pix = pix.fromImage(image);
painter.drawPixmap(320, 0, 320, 480, pix);//坐标(320,0),图片大小为(320,480)
}
效果正如我们想想的那样:

http://blog.csdn.net/linpuliang/article/details/38725339
QImage与QPixmap加载图片效果(QImage不能拉伸图片,QPixmap默认拉伸图片)的更多相关文章
- CSS3实现的图片加载动画效果
来源:GBin1.com 使用CSS3实现的不同图片加载动画效果,支持响应式,非常适合针对瀑布流布局图片动态加载特效进行增强! HTML <ul class="grid effect- ...
- 基于jQuery的图片加载loading效果插件
基于jQuery的图片加载loading效果插件 图片loading的效果是网页中比较常见的,尤其是对大图片,loading效果让用户能够明白图片加载的过程. 实现思路也是比较简单的: $.fn.Lo ...
- jQuery8种不同的瀑布流懒加载loading效果
优化图片加载插件jQuery8种不同的瀑布流懒加载loading效果 在线预览 下载地址 实例代码 <ul class="grid effect-1" id="g ...
- 使用Bootstrap3和Ladda UI实现的多种按钮“加载中”效果体验
在线演示 在线演示 大家在开发基于web的网站或者web应用中,常常在AJAX调用的过程中需要提示用户并且展示相关的“加载中”效果,类似的UI设计也非常多,比如,当点击一个按钮后,在它的旁边显示一个 ...
- 一个很酷的加载loading效果--IT蓝豹
一个很酷的加载loading效果,自定义LeafLoadingView实现,LeafLoadingView继承view, 本例子主要由以下几点构成 (1):RotateAnimation实现叶子旋转 ...
- Ladda – 把加载提示效果集成到按钮中,提升用户体验
Ladda 是一组集成了加载提示的按钮,以弥合行动和反馈之间的时间间隔,提供更好的功能使用体验.主要用于在用户点击提交之后,向用户提供即时的反馈,让他们知道浏览器正在处用户提交的任务. 您可能感兴趣的 ...
- php+ajax实现登录按钮加载loading效果
php+ajax实现登录按钮加载loading效果,一个提高用户体验,二个避免重复提交表单,ajax判断加载是否完成. 登录表单 <form onsubmit="return chec ...
- WPF防止界面卡死并显示加载中效果
原文:WPF防止界面卡死并显示加载中效果 网上貌似没有完整的WPF正在加载的例子,所以自己写了一个,希望能帮到有需要的同学 前台: <Window x:Class="WpfApplic ...
- iOS 实现加载转圈效果
1.思路: 新建一个view,添加shape,给予一个动画实现. 2.效果图: 效果1: 效果2: gif有点卡,代码运行不会这样. 3.源码(整个类放进来的) 效果1源码: // // YJDown ...
随机推荐
- Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据
1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协 ...
- RedHat7搭建MongoDB集群
下载RPM安装包# wget -c -r -N -np -nd -L -nH https://repo.mongodb.org/yum/redhat/7/mongodb-org/stable/x86_ ...
- 百度知道的php爬虫
原文地址:百度知道的php爬虫作者:好宏杰软件 <?php class spider { private $content ; private $contentlen ; p ...
- 请问JAVA三层架构,持久层,业务层,表现层,都该怎么理解?和MVC三层模型有什么区别
持久层用来固化数据,如常说的DAO层,操作数据库将数据入库业务层用来实现整体的业务逻辑 如 前台获得了数据,逻辑层去解析这些数据,效验这些数据等操作表现层很好解释 你现在看到的网页 一些界面 都属于 ...
- android Activity 生命周期
今天第一次详细学习android,主要了解了一下activity的生命周期,下面详细说一下自己的简介: 在Actity中最主要的有一下几个方法: protectedvoid onCreate(Bund ...
- 关于基于.net的WEB程序开发所需要的一些技术归纳
前提: 最近公司里有一个同事,年龄比我大几岁,但是由于是转行来做开发的,许多的关于.net开发技术不是很入行,所以总是会问我一些东西,基于自己以前的一些 经验,总是会愿意给他讲一些总结性的东西,希望他 ...
- BearSkill实用方法之UITextField限制输入的字符数量
原文:http://blog.csdn.net/xiongbaoxr/article/details/51525061
- html-----003
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Laravel_1 安装
1>http://www.golaravel.com/post/install-and-run-laravel-5-x-on-windows/ 2>http://www.golaravel ...
- 搭建golang的beego注意事项
大家都知道,在学golang的时候,大家都会去关注谢大的beego快速开发架构. 首先,小弟是win7 32bit系统,在这里,我要把我学习golang的过程和小心得记录起来. 相信想学的人一定会早早 ...