QPainter在窗口上绘图的默认坐标系统,是绘图设备的物理坐标。缺省的坐标系统中,单位就是像素。
在使用QPainter进行绘图时,经常会重写paintEvent(QPaintEvent *event)函数,在函数内利用QPainter绘制图形,如下所示:
void QTestWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setPen(QPen(Qt::red, 1, Qt::DashLine));
painter.setBrush(Qt::gray);
painter.drawRect(50, 50, 100, 100);
}
QPainter的理解:
Qt 的绘图系统使用户可以在屏幕或打印设备上用相同的API绘图。绘图系统主要由QPainter、QPaintDevice和QPaintEngine三个类完成。
QPainter:是用来进行绘图操作的类,可以理解为“画家”;
QPaintDevice:是用QPainter进行绘图的抽象二维界面,可以理解为“画板”;
QPaintEngine:是给QPainter提供在不同设备上绘图的接口。
QPaintEngine类由QPainter和QPaintDevice内部使用,应用程序中无需直接使用,除非创建自己的设备类型。
explicit QPainter(QPaintDevice *);
在绘图时,需要构造QPainter对象,例如QPainter painter(this);从构造函数声明中可以看出,在绘图时应该告诉“画家”在哪个“画板”上绘制。
基类 | QPaintDevice(画板) |
派生类 | QGLFramebufferObject, QGLPixelBuffer, QImage, QOpenGLPaintDevice, QPagedPaintDevice, QPaintDeviceWindow, QPicture, QPixmap, QSvgGenerator, and QWidget |
由上可以,QPainter可以在由QPaintDevice派生的子类上绘图。
QWidget类及其子类是最常用的绘图设备。QWidget坐标系统的单位是像素,左上角坐标为(0,0),向右是X轴正方向,向下是Y轴正方向,绘图区宽度由QWidget::width()函数获取,高度由QWidget::height()函数获取。QWidget的绘图区的坐标系统是物理坐标系,称为视口(viewport)坐标。对应的逻辑坐标称为窗口(Window)坐标。
QPainter绘图的主要属性:
pen(画笔):QPen对象,控制线条的颜色、宽度、线型等;
brush(画刷):QBrush对象,填充封闭区域的颜色,渐变特性,图片做材质等;
font(字体):QFont对象,用于绘制文字时,设置文字的字体样式、大小等属性。
QPainter绘图的其他属性:如叠加模式、旋转、缩放等。
QT用QPainter的drawText绘制文字:
drawText(QPoint,QString)不能换行识别不了 / n
drawText(QRect,int flags,QString)可以换行需要设置alignmen