欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611
首先说图片的缩放,主要是通过scaled()函数来实现图片的放大和缩小,
该函数在QImage和QPixmap类中均有实现。
以QPixmap为例进行说明:
-
QPainter painter(this);
-
QPixmap pix;
-
pix.load("images/qt.jpg");
-
painter.drawPixmap(0,0,pix);
-
qreal width = pix.width();
-
qreal height = pix.height();
-
pix = pix.scaled(width*2, height*2, Qt::KeepAspectRatio);
-
//将图片的宽和高都扩大两倍,并且在给定的矩形内保持宽高的比值
-
painter.drawPixmap(100,100,pix);
复制代码
效果如下:
下面是图片的旋转。旋转使用的是QPainter类的rotate()函数,它默认是以原点为中心进行旋转的。我们要改变旋转的中心,可以使用translate()函数完成。
translate90函数是用来改变坐标的原点的,改变了坐标原点,也就改变了旋转的中心。
下图为绕图片中心旋转90°的效果:
参考代码:
-
QPainter painter(this);
-
QPixmap pix;
-
pix.load("images/qt.jpg");
-
painter.translate(50,50); //使图片的中心作为旋转的中心
-
painter.rotate(90); //顺时针旋转90°
-
painter.translate(-50,-50); //将原点复位
-
painter.drawPixmap(0,0,100,100,pix);
复制代码
图片大小为100像素,将(50,50)作为原点,则旋转时相当于按照图片中心来旋转。
下面介绍下图片的扭曲。实现图片的扭曲,使用的是QPainter类的shear(qreal sh,qreal sv)函数完成的。它有两个参数,前面的参数实现横行变形,参数为正时,图片向右扭曲;参数为辅时向左扭曲。后面的参数实现纵向变形,参数的正负分别对应方向向下和向上:
-
painter.shear(0.5,0);
-
painter.drawPixmap(0,0,pix);
复制代码
|
欢迎加入我们的QQ群,无论你是否工作,学生,只要有c / vc / c++ 编程经验,就来吧!158427611