电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

十五、Qt 2D绘图(五)显示图片(2011-4-6)VIP免费

十五、Qt 2D绘图(五)显示图片(2011-4-6)_第1页
1/7
十五、Qt 2D绘图(五)显示图片(2011-4-6)_第2页
2/7
十五、Qt 2D绘图(五)显示图片(2011-4-6)_第3页
3/7
十五、Qt2D绘图(五)显示图片现在我们来实现在窗口上显示图片,并学习怎样将图片进行平移,缩放,旋转和扭曲。这里我们是利用QPixmap类来实现图片显示的。一、利用QPixmap显示图片。1.将以前的工程文件夹进行复制备份,我们这里将工程文件夹改名为painter05。(以前已经说过,经常备份工程目录,是个很好的习惯)2.在工程文件夹的debug文件夹中新建文件夹,我这里命名为images,用来存放要用的图片。我这里放了一张linux.jpg的图片。如下图所示。3.在QtCreator中打开工程。(即打开工程文件夹中的.pro文件),如图。4.将dialog.cpp文件中的paintEvent()函数更改如下。voidDialog::paintEvent(QPaintEvent*){QPainterpainter(this);QPixmappix;pix.load(“images/linux.jpg”);painter.drawPixmap(0,0,100,100,pix);}这里新建QPixmap类对象,并为其添加图片,然后在以(0,0)点开始的宽和高都为100的矩形中显示该图片。你可以改变矩形的大小,看一下效果啊。最终程序运行效果如下。(说明:下面的操作都会和坐标有关,这里请先进行操作,我们在下一节将会讲解坐标系统。)二、利用更改坐标原点实现平移。Qpainter类中的translate()函数实现坐标原点的改变,改变原点后,此点将会成为新的原点(0,0);例如:voidDialog::paintEvent(QPaintEvent*){QPainterpainter(this);QPixmappix;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()函数来实现图片的放大和缩小。例如:voidDialog::paintEvent(QPaintEvent*){QPainterpainter(this);QPixmappix;pix.load(“images/linux.jpg”);painter.drawPixmap(0,0,100,100,pix);qrealwidth=pix.width();//获得以前图片的宽和高qrealheight=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()函数完成。例如:voidDialog::paintEvent(QPaintEvent*){QPainterpainter(this);QPixmappix;pix.load(“images/linux.jpg”);painter.translate(50,50);//让图片的中心作为旋转的中心painter.rotate(90);//顺时针旋转90度painter.translate(-50,-50);//使原点复原painter.drawPixmap(0,0,100,100,pix);}这里必须先改变旋转中心,然后再旋转,然后再将原点复原,才能达到想要的效果。运行程序,效果如下。五、实现图片的扭曲。实现图片的扭曲,是使用的QPainter类的shear(qrealsh,qrealsv)函数完成的。它有两个参数,前面的参数实现横行变形,后面的参数实现纵向变形。当它们的值为0时,表示不扭曲。例如:voidDialog::paintEvent(QPaintEvent*){QPainterpainter(this);QPixmappix;pix.load(“images/linux.jpg”);painter.drawPixmap(0,0,100,100,pix);painter.shear(0.5,0);//横向扭曲painter.drawPixmap(100,0,100,100,pix);}效果如下:其他扭曲效果:painter.shear(0,0.5);//纵向扭曲painter.shear(0.5,0.5);//横纵扭曲图片形状的变化,其实就是利用坐标系的变化来实现的。我们在下一节中将会讲解坐标系统。这一节中的几个函数,我们可以在其帮助文件中查看其详细解释。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

十五、Qt 2D绘图(五)显示图片(2011-4-6)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部