首页 > 代码库 > 4.QPixmap,QTransform,绘图函数的使用

4.QPixmap,QTransform,绘图函数的使用


  1. 新建一个项目Painter

MyWidget.h

#ifndefMYWIDGET_H

#defineMYWIDGET_H

 

#include<QWidget>

 

classMyWidget:publicQWidget

{

   Q_OBJECT

public:

   explicitMyWidget(QWidget*parent= 0);

   voidpaintEvent(QPaintEvent*);

 

signals:

 

publicslots:

 

};

 

#endif//MYWIDGET_H

MyWidget.cpp

#include"MyWidget.h"

#include<QPainter>

#include<QPixmap>

#include<QApplication>

 

MyWidget::MyWidget(QWidget*parent):

   QWidget(parent)

{

}

 

voidMyWidget::paintEvent(QPaintEvent*)

{

   QPixmappixmap(size());

 

   QPainterp(&pixmap);

 

   //p.translate(100,100);

   //p.scale();

   //消除锯齿

   p.setRenderHint(QPainter::Antialiasing);

   //转换

   QTransformtransform;

   transform.translate(50,50);

   //旋转30

   transform.rotate(30);

  //transform.scale(.5,.5);

   p.setTransform(transform);

#if1

   //下面的transform可以覆盖上面的一个transform的效果

   QTransformtransform2;

   //对整个效果进行缩放

   transform2.scale(.5,.5);

   //最后一个参数实现和上面一个transform实现组合

   p.setTransform(transform2,true);

#endif

   //通过两个点实现画线

   p.drawLine(QPoint(0,0),QPoint(100,100));

 

   //p.translate(-100,-100);

   //钢笔

   p.setPen(QPen(Qt::red,2,Qt::DashLine));

   //使用刷子

   p.setBrush(Qt::yellow);

   //设置刷子

   p.setFont(QFont("aaa",40,700,true));

 

   p.drawEllipse(QPoint(95,333),50,50);

   //里面写上文字

   p.drawText(QPoint(300,50),"Helloworld");

   //p.drawPixmap(QPoint(40,40),QPixmap("../aaa.png"));

   //p.drawRect(QRect(40,60,100,50));

   //下面的方式实现画一个圆角矩形

   p.drawRoundRect(QRect(40,60,100,50));

 

   p.end();

 

   p.begin(this);

   //通过下面的方式实现画图,之所以运行的结果是黑丝的图,是因为加的是pixmap

   p.drawPixmap(0,0,pixmap);

}

 

intmain(intargc,char**argv)

{

   QApplicationapp(argc,argv);

 

   MyWidgetw;

   w.show();

 

   returnapp.exec();

}

运行结果:

 

 

 

 

 

4.QPixmap,QTransform,绘图函数的使用