零基础开始QT绘图(2)

37 篇文章 15 订阅

上一篇我们学习了在widget中绘制一个简单的矩形,虽然简单,但至少我们摸清了进入在QT绘制图形的大门。接下来,在这篇中,我们顺着大门继续往前走。

我们仅仅学习到画一根线一个矩形是远远不够的,接下来我们来了解QT绘图的四个必备法宝的应用,这5个法宝就是指5个对象,QPainter QBrush,QPen,QFont,QImage有了这5个对象,我们基本可以完成一半图形展示的需要了。
我们来看一段代码:

 QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setRenderHints(QPainter::HighQualityAntialiasing);

    QRect rec(this->width()/4,this->height()/4,this->width()/2,this->height()/2);

    QPen pen;
    pen.setWidth(4);
    pen.setColor(Qt::green);
    pen.setStyle(Qt::SolidLine);
    pen.setCapStyle(Qt::FlatCap);
    pen.setJoinStyle(Qt::RoundJoin);
    painter.setPen(pen);

    QBrush brush;
    brush.setColor(Qt::blue);
    brush.setStyle(Qt::VerPattern);
    painter.setBrush(brush);

    QFont font;
    font.setPixelSize(48);
    pen.setStyle(Qt::DotLine);
    painter.setFont(font);

    QImage image;
    QString filename="D:/Pictures/test.jpg";
    if(QFile::exists(filename))
    {
     image.load(filename);
     painter.drawImage(rec, image);
    }

    painter.drawRect(rec);

    painter.fillRect(rec,brush);
    painter.drawEllipse(rec);
    painter.drawText(rec,Qt::AlignCenter,"Hello");

我们这段代码完整的展示了这5个对象的基本使用方法。下面我们逐个的来解释。
QPainter,是用来进行绘图操作的类,在这里我们不用管绘图设备(QPaintDevice)及绘图引擎(QPaintEngine),在PaintEvent方法中直接使用即可。QBrush QPen QFont 是QPainter的三个属性类,QImage类有别于前面三个类,但也是常常可以用QPainter调用。

QBrush:但凡要填充一个封闭区域,就用它。包括填充颜色、样式、材质、纹理甚至图片都是用它,所以QBrush也就针对的设置了这几种方法,很好用。
QPen:但凡要划线,就用它了,也是很容易理解的,线的宽度、颜色、样式都在这里设置。
QFont:但凡设计到字体、大小等都由他来设置。
上面代码的运行效果如下:
在这里插入图片描述
实际上,上述5个对象,基本能够完成我们所有的基本图形绘制和展示了,而且也可以实现比较复杂的适时绘图效果,比如我博文中的实例《QT与arduino互动实现雷达扫描效果》。但是,如果我们需要实现对图形的复杂操作,比如选择、编辑、拖放、修改等功能,甚至要实现组态软件的一些复杂功能,那么我们有可能就要借助QT中的另一个绘图架构Graphics View, 后面根据教程的推进会详细讲解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河西石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值