天天看点

我的QT Creator学习笔记(二十二)——绘制基本图形和填充

参考文献:《Qt Creator 快速入门》第三版 霍亚飞编著

Qt中和绘图相关的三个类是QPainter、QPainterDevice和QPaintEngine。QPainter可以在继承自QpainterDevice类的任何对象上进行绘制操作。

QPainter一般在一个部件绘制重绘事件Paint Event的处理函数paintEvent()函数中进行绘制。首先创建QPainter对象,然后进行图像绘制,最后销毁QPainter对象。

另外还有几个类经常用到。QPen类,为QPainter提供画笔来绘制线条和形状的轮廓。QBrush类提供了画刷来对图图形进行填充。

新建基于Qt Widgets的应用,基类选择QWifget。在widget.h中声明重绘事件处理函数

protected:
    void paintEvent(QPaintEvent *event)
           

 在widget.cpp中实现重写绘图函数,使用上面提到的几个类进行基本图形绘制 ,代码如下

void Widget::paintEvent(QPaintEvent *event)
{
    //创建painter
    QPainter painter;
    //call begin,指定this为绘图设备
    painter.begin(this);

    //画线(没有指定画笔,就使用默认画笔)
    painter.drawLine(QPoint(0,0),QPoint(100,100));
    //创建画笔
    QPen pen(Qt::green,5,Qt::DotLine,Qt::RoundCap,Qt::RoundJoin);
    //使用画笔
    painter.setPen(pen);
    QRectF rectangle(70.0,40.0,80.0,60.0);
    int startAngle=30*16;
    int spanAngle=120*16;
    //绘制圆弧
    painter.drawArc(rectangle,startAngle,spanAngle);
    //重新设置画笔
    pen.setWidth(1);
    pen.setStyle(Qt::SolidLine);
    painter.setPen(pen);
    //绘制一个矩形
    painter.drawRect(160,20,50,40);
    //创建画刷
    QBrush brush(QColor(0,0,255),Qt::Dense4Pattern);
    //使用画刷
    painter.setBrush(brush);
    //绘制椭圆
    painter.drawEllipse(220,20,50,80);
    //设置纹理
    brush.setTexture(QPixmap("../mydrawing/texture.png"));
    //重新使用画刷
    painter.setBrush(brush);
    //定义4个点
    static const QPointF points[4]=
    {
        QPointF(270.0,80.0),
        QPointF(290.0,10.0),
        QPointF(350.0,30.0),
        QPointF(290.0,70.0)
    };
    //绘制多边形
    painter.drawPolygon(points,4);
   painter.end();

}
           

效果如下

我的QT Creator学习笔记(二十二)——绘制基本图形和填充

继续阅读