欢迎加入我们的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