【SylixOS】QT之绘图引擎QPainterEngine

  1. 简介

在QT中所有的绘图操作都是通过QPainter来完成的,甚至QT自身所有控件窗口的绘制都是通过QPainter绘制显示。另外QPainterDevice为作为绘图设备存在。其实最后所有的操作都是通过QT自身的QPainterEngine来实现一些的绘制渲染。

  1. 绘制流程
    1. QPainter提供绘制接口

对于QPainter来说,内部有一个状态堆栈,任何时候都可以通过调用 save() 和 restore() 对QPainter的内部状态执行进栈保存和压栈还原的操作。

提供了大部分基本二维几何元的绘制命令,如:drawPoint()、drawPoints()、drawLine()、drawRect()、drawRoundedRect()、drawEllipse()、drawArc()、drawPie()、drawChord()、drawPolyline()、drawPolygon()、drawConvexPolygon() 和 drawCubicBezier(),还提供了 fillPath 来填充 QPainterPath 组成的形状和strokePath()来绘制给定path的边缘。也提供了一些列绘图命令来绘制 pixmaps 和 images, 它们是: drawPixmap()、drawImage(),其中 drawPixmap(),和 drawImage() 产生的效果是一样的,只是drawPixmap在屏幕上绘制比较快,而drawImage 在 QPrinter 和其他设备上绘制会比较快,文字绘制用接口 drawText()等。

    1. QPainterDevice提供绘制刷新

在QT程序中通过事件驱动刷新界面,包括窗口大小改变以及拖动等操作。QT中子窗口通过paint函数调用painterEvent周期函数,刷新客户端绘制操作。对于三维绘制则需要通过flush函数来实现sawapBuffer渲染。如图 2.1 绘制流程所示

2.1 绘制流程

    1. QPainterEngine提供绘制实现

在QT5中可以通过QPA来指定不同平台下的QWindow、QScreen、QOpengGLContext的实现方式。那么对于不同平台的QPainterEngine也有不同的实现方式。如图 2.2 QPainterEngine不同平台下实现方式所示

2.2 QPainterEngine不同平台下实现方式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值