- 新建一个项目Painter
MyWidget.h
#ifndef
MYWIDGET_H
#define
MYWIDGET_H
#include
<QWidget>
class
MyWidget
:
public
QWidget
{
Q_OBJECT
public:
explicit
MyWidget(QWidget
*parent
= 0);
void
paintEvent(QPaintEvent
*);
signals:
public
slots:
};
#endif
//
MYWIDGET_H
MyWidget.cpp
#include
"MyWidget.h"
#include
<QPainter>
#include
<QPixmap>
#include
<QApplication>
MyWidget::MyWidget(QWidget
*parent)
:
QWidget(parent)
{
}
void
MyWidget::paintEvent(QPaintEvent
*)
{
QPixmap
pixmap(size());
QPainter
p(&pixmap);
//p.translate(100,
100);
//p.scale();
//消除锯齿
p.setRenderHint(QPainter::Antialiasing);
//转换
QTransform
transform;
transform.translate(50,50);
//旋转30度
transform.rotate(30);
//
transform.scale(.5,
.5);
p.setTransform(transform);
#if
1
//下面的transform可以覆盖上面的一个transform的效果
QTransform
transform2;
//对整个效果进行缩放
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),
"Hello
world");
//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);
}
int
main(int
argc,
char**
argv)
{
QApplication
app(argc,
argv);
MyWidget
w;
w.show();
return
app.exec();
}
运行结果: