Qt绘图和绘图设备

1.QPainter绘图系统

1.1 QPainter与QPainterDevice

    Qt绘图系统允许使用相同的API在屏幕和其他打印设备上进行绘制,整个绘图系统基于QPainter,QPainterDevice,QPaintEngine三个类。

    QPainter用来执行绘制的操作

    QPainterDevice是一个二维空间的抽象,这个二维空间允许QPainter在上面进行绘制,即QPainter工作的空间

    QPaintEngine提供了画笔(QPainter)在不同的设备上进行绘制的统一的接口

    QPaintEngine类应用于QPainter和QPainterDevice之间,通常对于开发人员是透明的,除非你需要自定义一个设备,否则你是不需要关心QPaintEngine这个类的。

    我们可以把QPainter理解成画笔;把QPainterDevice理解为使用画笔的地方《画布》,为了统一使用同一种画笔,就设计了QPaintEngine类,这个类让不同的画布、屏幕能使用同一种画笔

Qt绘图和绘图设备_第1张图片

   上图表示,Qt的绘图系统实际上是使用QPainter在QPainterDevice上进行绘制,他们之间使用QPaintEngine进行通讯(也就是翻译QPainter的指令)

    一般绘图设备包括QWidget、QPixmap、QImage等,这些绘图设备为QPainter提供一个“画布”

1.2 paintEvent事件

   QWidget类及其子类是最常用的绘图设备,从QWidget类继承的类都有paintEvent()事件,要在设备上绘图,只需要重定义此事件并编写响应代码即可。

   在响应代码中创建一个QPainter对象获取绘制设备的接口,然后就可以在绘图设备的“画布”上绘图了

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this); // 创建与绘图设备关联的QPainter对象
    
    ...  add your code  ...
    // painter在设备的窗口上画图

}

1.3 QPainter绘制基本图形元件

函数名 功能
drawArc

画弧线

drawChord drawChord 画一段弦
drawConvexPolygon 根据给定的点画凸多边形
drawEllipse 画椭圆
drawImage 在指定的矩形区域内绘制图片
drawLine 画直线
drawLines 画一批直线
drawPath 绘制由QPainterPath对象定义的路线
drawPie 绘制扇形
drawPixmap 绘制Pixmap图片
drawPoint 画一个点
drawPoints 画一批点
drawPolygon 画多边形,最后一个点会和第一个点闭合
drawPolyline 画多点连接的线,最后一个点不会和第一个点连接
drawRect 画矩形
drawRoundedRect 画圆角矩形
drawText 绘制文本,只能绘制单行文字,字体大小等属性由QPainter::font()决定
eraseRect 擦除某个矩形区域,等效于用背景色填充该区域
fillPath 填充某个QPainterPath定义的绘图路径,但轮廓线不显示
fillRect 填充一个矩形,无边框线

 

实例:

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawRoundedRect(50,50,200,300,20,20);
}

 Qt绘图和绘图设备_第2张图片

1.4 QPainter绘图的主要属性

<1>pen属性  [画笔QPen]

<2>brush属性 [画刷QBrush]

<3>font属性 [字体QFont]

实例:

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);

    QPen pen(Qt::PenStyle::DotLine);
    painter.setPen(pen); // 设置画笔
    QBrush brush(QColor(255,255,0), Qt::BrushStyle::CrossPattern);
    painter.setBrush(brush); // 设置画刷

    // 封闭图形自动填充画刷
    painter.drawRoundedRect(50,50,200,300,20,20);
}

结果:

 Qt绘图和绘图设备_第3张图片

2.绘图设备

2.1 QPixmap

       创建对象 QPixmap pix(w,h)

       填充颜色 fill

       保存 save

2.2 QBitMap(黑白色)

2.3 QImage 

        设置色位等,可以设置里面的任意像素

2.4 QPicture 

        保存绘图指令,也可以重现指令

2.5 QWidget

你可能感兴趣的:(QT)