QT QPainter的几个绘图效果实践
在使用绘图对象需要引用QPainter
#include "QPainter"
#include "QDebug"
1.一般显示
QPainter painter1(this);
QPixmap pix1;
pix1.load(":images/butterfly.png");
painter1.drawPixmap(0,0,100,100,pix1);
2.图片移动
QPainter painter2(this);
QPixmap pix2;
pix2.load(":images/butterfly.png");
painter2.drawPixmap(0,0,100,100,pix2);
painter2.translate(100,100); //将(100,100)设为坐标原点
painter2.drawPixmap(0,0,100,100,pix2);
3.图片缩放scaled
QPainter painter3(this);
QPixmap pix3;
pix3.load(":images/butterfly.png");
painter3.drawPixmap(0,0,100,100,pix3);
qreal width = pix3.width(); //获得图片的宽和高
qreal height = pix3.height();
pix3 = pix3.scaled(width*3,height*3,Qt::KeepAspectRatio);
//将图片的宽和高都扩大3倍,并且在给定的矩形内保持宽高的比值
painter3.drawPixmap(100,200,pix3);
4.图片旋转translate
QPainter painter4(this);
QPixmap pix4;
pix4.load(":images/butterfly.png");
qDebug()<<"宽度:"<<pix4.width();
qDebug()<<"高度:"<< pix4.height();
painter4.translate(pix4.width()/2,pix4.height()/2); //让图片的中心作为旋转的中心
painter4.rotate(90); //顺时针旋转90度
// painter4.translate(-60,-60); //使原点复原
painter4.translate(-(pix4.width()/2),-(pix4.height()/2)); //使原点复原
painter4.drawPixmap(0,0,pix4.width(),pix4.height(),pix4);
5.图片扭曲shear
横向扭曲
QPainter painter5(this);
QPixmap pix5;
pix5.load(":images/butterfly.png");
painter5.drawPixmap(0,0,100,100,pix5);
painter5.shear(0.5,0); //横向扭曲
painter5.drawPixmap(100,0,100,100,pix5);
painter5.drawPixmap(200, 0,100,100,pix5);
纵向扭曲
QPainter painter6(this);
QPixmap pix6;
pix6.load(":images/butterfly.png");
painter6.drawPixmap(0,0,100,100,pix6);
painter6.shear(0,0.5); //纵向扭曲
painter6.drawPixmap(100,0,100,100,pix6);
painter6.drawPixmap(200, 0,100,100,pix6);