十五Qt2D绘图(五)显示图片(2011-4-6).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
十五Qt2D绘图(五)显示图片(2011-4-6)

十五、Qt 2D绘图(五)显示图片 现在我们来实现在窗口上显示图片,并学习怎样将图片进行平移,缩放,旋转和扭曲。这里我们是利用QPixmap类来实现图片显示的。 一、利用QPixmap显示图片。 1.将以前的工程文件夹进行复制备份,我们这里将工程文件夹改名为painter05。(以前已经说过,经常备份工程目录,是个很好的习惯) 2.在工程文件夹的debug文件夹中新建文件夹,我这里命名为images,用来存放要用的图片。我这里放了一张linux.jpg的图片。如下图所示。 3.在Qt Creator中打开工程。(即打开工程文件夹中的.pro文件),如图。 4.将dialog.cpp文件中的paintEvent()函数更改如下。 void Dialog::paintEvent(QPaintEvent *) { ??? QPainter painter(this); ??? QPixmap pix; ??? pix.load(“images/linux.jpg”); ??? painter.drawPixmap(0,0,100,100,pix); } 这里新建QPixmap类对象,并为其添加图片,然后在以(0,0)点开始的宽和高都为100的矩形中显示该图片。你可以改变矩形的大小,看一下效果啊。最终程序运行效果如下。 (说明:下面的操作都会和坐标有关,这里请先进行操作,我们在下一节将会讲解坐标系统。) 二、利用更改坐标原点实现平移。 Qpainter类中的translate()函数实现坐标原点的改变,改变原点后,此点将会成为新的原点(0,0); 例如: void Dialog::paintEvent(QPaintEvent *) { ??? QPainter painter(this); ??? QPixmap pix; ??? pix.load(“images/linux.jpg”); ??? painter.drawPixmap(0,0,100,100,pix); ??? painter.translate(100,100); //将(100,100)设为坐标原点 ??? painter.drawPixmap(0,0,100,100,pix); } 这里将(100,100)设置为了新的坐标原点,所以下面在(0,0)点贴图,就相当于在以前的(100,100)点贴图。效果如下。 三、实现图片的缩放。 我们可以使用QPixmap类中的scaled()函数来实现图片的放大和缩小。 例如: void Dialog::paintEvent(QPaintEvent *) { ??? QPainter painter(this); ??? QPixmap pix; ??? pix.load(“images/linux.jpg”); ??? painter.drawPixmap(0,0,100,100,pix); ??? qreal width = pix.width(); //获得以前图片的宽和高 ??? qreal height = pix.height(); ??? pix = pix.scaled(width*2,height*2,Qt::KeepAspectRatio); ??? //将图片的宽和高都扩大两倍,并且在给定的矩形内保持宽高的比值 ??? painter.drawPixmap(100,100,pix); } 其中参数Qt::KeepAspectRatio,是图片缩放的方式。我们可以查看其帮助。将鼠标指针放到该代码上,当出现F1提示时,按下F1键,这时就可以查看其帮助了。当然我们也可以直接在帮助里查找该代码。 这是个枚举变量,这里有三个值,只看其图片就可大致明白,Qt::IgnoreAspectRatio是不保持图片的长宽比,Qt::KeepAspectRatio是在给定的矩形中保持长宽比,最后一个也是保持长宽比,但可能超出给定的矩形。这里给定的矩形是由我们显示图片时给定的参数决定的,例如painter.drawPixmap(0,0,100,100,pix);就是在以(0,0)点为起始点的宽和高都是100的矩形中。 程序运行效果如下。 四、实现图片的旋转。 旋转使用的是QPainter类的rotate()函数,它默认是以原点为中心进行旋转的。我们要改变旋转的中心,可以使用前面讲到的translate()函数完成。 例如: void Dialog::paintEvent(QPaintEvent *) { ??? QPainter painter(this); ??? QPixmap pix; ??? pix.load(“images/linux.jpg”); ??? painter.translat

文档评论(0)

peain + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档