目录:
- 基础知识
- 应用1:利用计时器实现动图
- 应用2:绘制钟表
一.QPainter的一些基础知识
- QPainter只能在类对象的paintEvent()函数中绘制图形
- QPainter类的成员有:
1.QPen :画图形的”笔“,即图形的边框,可以设定其颜色,宽度等
2.QBrush :调色板,决定边框里面的颜色,可以设定颜色,风格等
3.QFont :文本格式,可以设定字体(如宋体),颜色,粗细等
4.QPixmap :绘制图片
5.通过painter.save()与painter.restore()可以实现状态的保存和恢复
同时这些状态采用类似堆栈的存储方式,即后存的先恢复
常用于旋转后的坐标轴恢复等情况
QPainter的一些基础图形绘制
成员函数 | 功能 |
---|---|
drawPoint() | 绘制点 |
deawLine() | 绘制直线 |
drawRect() | 绘制矩形 |
drawArc() | 绘制圆弧 |
drawEllipse() | 绘制椭圆 |
drawConvexPolygon() | 绘制多边形 |
最基本的绘制模板:
QPainter painter(this);//必须
painter.setPen(...);//设置画笔格式,非必须
pinater.setBrush(...);//设置填充内容,非必须
painter.setRenderHint(QPainter:: Antialiasing, true); //设置渲染,启动反锯齿,非必须
painter.draw...();//绘制图形
二.利用计时器实现动图
思路如下:
动图即有序而连贯的打印一组图片,即按照一定时间间隔打印图片,则应该使用到计时器,在每个计时器函数中实现一次图片的打印,同时应该提前将图片编号
若图片数目较多,则应该编写读取图片的函数
若要实现循环,则应令设置一参数用于记录当前打印图片编号,当一轮结束后重置
关键代码如下:
头文件中:
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
void paintEvent(QPaintEvent*m);
void timerEvent(QTimerEvent*m);
void Initpixmap();//此函数用于读取图片,并将其存入数组中
private:
Ui::Dialog *ui;
int number;
QPixmap pixmap[64];//用于存储图片的数组
源文件中:
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this)