//学习QPainter和重写自定义控件 3.22
#include "MyWidget.h"
#include <QApplication>
#include <QPainter>
#include <QPixmap>
MyWidget::MyWidget(QWidget *parent) : QWidget(parent)
{
}
void MyWidget::paintEvent(QPaintEvent *event)
{
QPixmap pixmap(size()); //将整个图片打包一起绘制,这样效率比较高
QPainter p(&pixmap); //绘制图形要考虑效率
pixmap.fill(Qt::white); //设置背景
//pixmap.fill(Qt::transparent); //改变透明背景
//旋转
QTransform trans; //可有实现复杂的功能
trans.rotate(30); //旋转30度
trans.scale(0.5,0.5); //缩放
p.setTransform(trans);
p.translate(100,100); //整体平移(简单的功能)
p.setRenderHint(QPainter::Antialiasing); //使线条变得圆润
//改变笔的样式
p.setPen(QPen(Qt::red,2,Qt::DashLine)); //影响所有线条
p.setBrush(Qt::yellow); //影响封闭图形内部
p.drawLine(QPoint(0,0),QPoint(100,100));
p.drawEllipse(QPoint(90,90),50,50);
p.drawText(QPoint(300,300),"liujiepeng");
//图片加载不出来(图片小的可以加载出来)
// p.drawPixmap(QPoint(200,200),QPixmap("..\\bbb.jpg"));
//p.drawRect(QRect(40,60,100,70));
p.translate(-100,-100); //下面图形还原
p.drawRoundRect(QRect(50,60,100,70));
p.end();
p.begin(this); //前面是打包的过程,下一步是整体运输的过程
p.drawPixmap(0,0,pixmap);
}
int main(int argc,char* argv[])
{
QApplication app(argc,argv);
MyWidget w;
w.show();
return app.exec();
}