Qt实现2D绘图

一、介绍

Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainterQPaintDeviceQPaintEngine这三个类。其中QPainter用来执行绘图操作;QPaintDevice提供绘图设备,它是一个二维空间的抽象,可以使用QPainter在其上进行绘制;QPaintEngine提供了一些接口,可以用于QPainter在不同的设备上进行绘制。

二、绘制一条直线

1.新建Qt Gui应用,项目名称为painter_1,类信息界面不用修改,即类名为MainWindow,基类为QMainWindow

2.在mainwindow.h文件中添加重绘事件处理函数的声明:

protected:
    void paintEvent(QPaintEvent *);override;

所有的绘制操作都要在这个函数里面完成。

3.下面到mainwindow.cpp文件中先需要添加头文件包含:

#include <QPainter>

然后添加该函数的定义:

void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPen pen;
    pen.setColor(QColor(Qt::blue)); //设置笔颜色
    pen.setWidth(4); //设置笔宽度
    painter.setPen(pen); //设置为要绘制的笔
    painter.drawLine(QPoint(0, 0), QPoint(100, 100));//画线

}

这里首先为该部件创建了一个QPainter对象,用于后面的绘制。然后使用drawLine()函数绘制了一条线段,线段的起点为(0, 0),终点为(100, 100) ,这里的单位是像素。效果如下图所示。

三、画笔与画刷

我们将paintEvent()函数的内容更改如下:

void MainWindow::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    QPen pen; //画笔
    pen.setColor(QColor(255, 0, 0));
    QBrush brush(QColor(0, 255, 0, 125)); //画刷
    painter.setPen(pen); //添加画笔,绘制出矩形框
    painter.setBrush(brush); //添加画刷,给矩形上色
    painter.drawRect(50, 50, 200, 100); //开始绘制矩形
}

运行

 

画笔还有许多其他的设置,可以查看该类的帮助文档。例如,可以使用pen.setStyle()来设置画笔样式,可用的画笔样式如下图所示。

画刷也有很多其他设置,这个也可以查看其帮助文档。在Qt中为画刷提供了一些可用的样式,可以使用setStyle()函数来设置。如下图所示。

 

 四、绘制弧线

我们将paintEvent()函数更改如下: 

void MainWindow::paintEvent(QPaintEvent *)
{
    QRectF rectangle(10.0, 20.0, 80.0, 60.0); //矩形
    int startAngle = 30 * 16;     //起始角度
    int spanAngle = 120 * 16;   //跨越度数
    QPainter painter(this);
    painter.drawArc(rectangle, startAngle, spanAngle);
}

 

 

 参考:

第11篇 2D绘图(一)绘制简单图形 · Qt 快速入门系列教程

QPainter详解_友善啊,朋友的博客-CSDN博客_qpainter

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值