Qt绘图与图形视图之绘图技术知识点的简单介绍

往期回顾

【QT进阶】Qt线程与并发之线程和并发的简单介绍-CSDN博客

【QT进阶】Qt线程与并发之QtConcurrent的简单介绍-CSDN博客

【QT进阶】Qt线程与并发之QtConcurrent返回值与run方法的参数说明-CSDN博客

 Qt绘图与图形视图之绘图技术知识点的简单介绍

Qt提供了丰富的绘图技术,我们可以在界面上拖动鼠标,或者在代码里指定参数进行绘图

一、Qt绘图系统常用知识点

1、QPainter

QPainter是Qt中用于进行绘图操作的关键类。

通过QPainter可以进行各种绘图操作,包括绘制图形、文本、图像等。

它提供了一系列的绘图方法,如drawLine、drawRect、drawText等,用于绘制各种图形元素。

示例:在QWidget上绘制一个红色矩形:

void MyWidget::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.fillRect(10, 10, 100, 100, Qt::red);
}

2、QPaintDevice

QPaintDevice是一个抽象类,是所有能够被QPainter绘制的对象的基类。

常见的QPaintDevice子类包括QWidget、QPixmap、QImage等,它们都可以作为绘图设备供QPainter使用。

示例:创建一个QImage对象并在其上绘制一条蓝色直线:

QImage image(200, 200, QImage::Format_RGB32);
QPainter painter(&image);
painter.drawLine(0, 0, 100, 100);

3、QPaintEngine

Qt提供了强大的绘图引擎,支持矢量图形绘制,可以实现平滑缩放和高分辨率显示。

支持绘制基本图形(如线条、矩形、椭圆、多边形等)、文本、图像等。

Qt中有多种不同的QPaintEngine的实现,用于支持不同的绘图系统,如基于OpenGL的绘图、基于PDF的绘图等。

而且我们通常不直接操作QPaintEngine,而是由QPainter间接管理。

4、绘图事件paintEvent()

在Qt中,绘图操作通常是在QWidget的paintEvent函数中进行的。

当窗口需要重绘时(如窗口大小改变、窗口被暂时遮挡后再次显示等),系统会发送绘图事件,然后调用paintEvent函数进行绘图操作。

示例:重写QWidget的paintEvent()函数,在窗口上绘制一段文本:

void MyWidget::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.drawText(10, 10, "Hello, Qt!");
}

5、Qt坐标系

Qt中的坐标系原点通常位于左上角,x轴向右增长,y轴向下增长。

可以通过QPainter的translate函数进行坐标系的平移,从而实现坐标系的变换。

示例:在QWidget上绘制一个椭圆,以窗口左上角为起点:

void MyWidget::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.drawEllipse(0, 0, 100, 50);
}

6、基本绘图元素

Qt中的基本绘图元素包括线条、矩形、椭圆、多边形、文本等。

可以使用QPainter提供的方法来绘制这些基本图形元素,从而实现各种绘图效果。

示例:在QWidget上绘制一个绿色矩形和一个蓝色椭圆:

void MyWidget::paintEvent(QPaintEvent *event) {
    QPainter painter(this);
    painter.fillRect(10, 10, 50, 50, Qt::green);
    painter.setBrush(Qt::blue);
    painter.drawEllipse(70, 10, 50, 50);
}

以上就是Qt里绘图技术知识点的简单介绍

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值