一 QPainter基础功能介绍
头文件mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include<QPainter>
class Mywidget : public QWidget
{
Q_OBJECT
public:
explicit Mywidget(QWidget *parent = 0);
void paintEvent(QPaintEvent *e);
signals:
public slots:
};
#endif // MYWIDGET_H
#include "mywidget.h"
#include<QApplication>
#include<QPixmap>
Mywidget::Mywidget(QWidget *parent) : QWidget(parent)
{
}
void Mywidget::paintEvent(QPaintEvent *e)
{
QPixmap pixmap(size()); //相当于小汽车,将所画的东西打包塞进小汽车中
//paintEvent需要画笔工具QPainter,在头文件QPainter中
QPainter p(&pixmap); //画在小汽车里边,能有效提高效率
QTransform transform;
//transform可以代替p的translate,因为他会进行一系列复杂的运算,平移、旋转、缩放等等
//虽然p也有scale,rotate,translate等函数
transform.rotate(10);
transform.scale(0.8, 0.8); //缩放功能
//将以下所有的图像旋转10度,改语句后面的所画的图像都要旋转
p.setTransform(transform);
//将下方画的所有图形移动相对应的位置,整体图像平移,只影响这句话之后的语句,知道遇到下一个translate语句
p.translate(100, 100);
//消锯齿,让画出的图形更加美观
p.setRenderHint(QPainter::SmoothPixmapTransform);
//设置画笔属性
p.setPen(QPen(Qt::red, 2, Qt::DashDotLine));
//设置封闭图像的填充颜色,从BrushStyle文件中找,要学会查询函数的使用准则
p.setBrush(Qt::CrossPattern);
//设置字体格式,宋体, 40个像素, 加粗值为100, 斜体
p.setFont(QFont("宋体", 40, 100, true));
QTransform transform2;
transform.scale(0.5, 0.5);
//这里的false代表是和前面的transform相互独立,效果不叠加
p.setTransform(transform2, false);
//画一条直线
p.drawLine(QPoint(0, 0), QPoint(100, 100));
//画一个椭圆,第一个参数为中心点,第二个第三个分别为