分类: QT开发

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默认拉伸图片)的更多相关文章

  1. CSS3实现的图片加载动画效果

    来源:GBin1.com 使用CSS3实现的不同图片加载动画效果,支持响应式,非常适合针对瀑布流布局图片动态加载特效进行增强! HTML <ul class="grid effect- ...

  2. 基于jQuery的图片加载loading效果插件

    基于jQuery的图片加载loading效果插件 图片loading的效果是网页中比较常见的,尤其是对大图片,loading效果让用户能够明白图片加载的过程. 实现思路也是比较简单的: $.fn.Lo ...

  3. jQuery8种不同的瀑布流懒加载loading效果

    优化图片加载插件jQuery8种不同的瀑布流懒加载loading效果  在线预览 下载地址 实例代码 <ul class="grid effect-1" id="g ...

  4. 使用Bootstrap3和Ladda UI实现的多种按钮“加载中”效果体验

    在线演示 在线演示 大家在开发基于web的网站或者web应用中,常常在AJAX调用的过程中需要提示用户并且展示相关的“加载中”效果,类似的UI设计也非常多,比如,当点击一个按钮后,在它的旁边显示一个 ...

  5. 一个很酷的加载loading效果--IT蓝豹

    一个很酷的加载loading效果,自定义LeafLoadingView实现,LeafLoadingView继承view, 本例子主要由以下几点构成 (1):RotateAnimation实现叶子旋转 ...

  6. Ladda – 把加载提示效果集成到按钮中,提升用户体验

    Ladda 是一组集成了加载提示的按钮,以弥合行动和反馈之间的时间间隔,提供更好的功能使用体验.主要用于在用户点击提交之后,向用户提供即时的反馈,让他们知道浏览器正在处用户提交的任务. 您可能感兴趣的 ...

  7. php+ajax实现登录按钮加载loading效果

    php+ajax实现登录按钮加载loading效果,一个提高用户体验,二个避免重复提交表单,ajax判断加载是否完成. 登录表单 <form onsubmit="return chec ...

  8. WPF防止界面卡死并显示加载中效果

    原文:WPF防止界面卡死并显示加载中效果 网上貌似没有完整的WPF正在加载的例子,所以自己写了一个,希望能帮到有需要的同学 前台: <Window x:Class="WpfApplic ...

  9. iOS 实现加载转圈效果

    1.思路: 新建一个view,添加shape,给予一个动画实现. 2.效果图: 效果1: 效果2: gif有点卡,代码运行不会这样. 3.源码(整个类放进来的) 效果1源码: // // YJDown ...

随机推荐

  1. 用NodeJs实现优先级队列PQueue

    优先级队列(PriorityQueue)是个很有用的数据结构,很多编程语言都有实现.NodeJs是一个比较新潮的服务器语言,貌似还没有提供相关类.这些天有用到优先级队列,因为时间很充足,闲来无事,就自 ...

  2. IntelliJ插件安装

    1. 插件管理器在线安装 在IntelliJ插件管理页面([FileàSettingsàIDE SettingsàPlugins]),点击[Browse repositories-]按钮,在搜索框内输 ...

  3. jquery判断浏览器版本插件,jquery-browser.js

    jquery判断浏览器版本插件,jquery-browser.js,jquery 判断是否为ie浏览器插件 >>>>>>>>>>>&g ...

  4. php并发处理

       最近某个项目用php生成文件,但是由于文件量太大,单个进程生成需要很长的时间,所以想并发进行处理.    网上查找了下相关的资料,php本身是没有多线程的概念的,那就只能用多进程了,再找资料却是 ...

  5. MYSQL批处理

    待更新 版权声明:本文为博主原创文章,未经博主允许不得转载.

  6. 使用Github建立个人博客

    总的说来 这个当有node.js 和gitbub的账号后,搭建一个自己的博客,想想还是挺美的事! 由于要把整个流程说清楚 估计lz还没这个实力,所以都是继承前辈们的经验,自己再添加一点遇到的问题和解决 ...

  7. 单点登录SSO原理

    最近接触了一点单点登录的知识,有一点理解,记录一下.有些问题并没有找到完美的解决方法,还需要找点已有框架来看看. 欢迎留言探讨. 1       概念 1.1     概念及理解 有一个网上广为流传的 ...

  8. 基于.net 职责链来实现 插件模式

    插件式的例子 QQ电脑管家,有很多工具列表,点一下工具下载后就可以开始使用了 eclipse ,X Server 等等 插件式的好处 插件降低框架的复杂性,把扩展功能从框架中剥离出来 让第三方有机会来 ...

  9. .net单元测试——常用测试方式(异常模拟、返回值测试、参数测试、数据库访问代码测试)

    最近在看.net单元测试艺术,我也喜欢单元测试,今天介绍一下如何测试异常.如何测试返回值.如何测试模拟对象的参数传递.如何测试数据库访问代码.单元测试框架使用的是NUnit,模拟框架使用的是:Rhin ...

  10. hibernate - 何时关闭数据库

    ref: http://www.coderanch.com/t/637103/ORM/databases/close-database-connection-hibernate 我上这个问题, 原因是 ...