gpt4 book ai didi

c++ - Qt 5 让 QQuickItem 在不使用 QPainter 的情况下绘制椭圆

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:33 25 4
gpt4 key购买 nike

我用 Qt 4.8 做了一个项目,我使用 QDeclarativeItem 并使用 QPainter 的 drawEllipse 方法绘制圆圈。

现在,在Qt5中,我似乎真的没有找到办法去做。在从 qt4 到 qt5 的移植指南中,他们说要使用 QSG* 类,但我找不到用它们中的任何一个绘制椭圆的方法。我想要看的两个是:QSGSimpleRectNodeQSGGeometry , 但什么都没有...

有什么想法吗?谢谢!

最佳答案

您使用 QSG* 类是正确的。它将比 QPainter API 更棘手,因为它们基本上是 OpenGL 的浅层包装器,而 OpenGL 没有对圆、曲线等的 native 处理。

方法是使用自定义 QML 项目,该项目是通过子类化 QQuickItem 然后用自定义绘图覆盖其 updatePaintNode 函数在 C++ 中实现的。

虽然您不必自己实际管理所有 OpenGL 缓冲区,但您必须通过指定要绘制的点(及其颜色等)将数据发送到 OpenGL“服务器”(GPU)一条曲线,这是相当劳动密集型的,因为 OpenGL 中的曲线通常由许多短线或一系列点表示。 Here is on example. And here is another.

一个填充的椭圆或圆将由许多三角形表示。

我不知道您的需求范围,但在 OpenGL 中通常更容易使用外部制作的圆形图像( Sprite ),然后在 OpenGL 中操纵其位置、大小、比例等。您也可以在 QtQuick 中执行此操作,尽管该技术通常不同于使用 updatePaintNode,后者用于自定义绘图,而不是图像处理(通常)。

关于c++ - Qt 5 让 QQuickItem 在不使用 QPainter 的情况下绘制椭圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22888744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com