在 QML 文档中,我找到了一个自定义类型(从 C++ 定义)的示例,可以使用 QPainter 在其上绘制:
标题:
#include <QtQuick/QQuickPaintedItem>
class PieChart : public QQuickPaintedItem
{
...
public:
void paint(QPainter *painter);
...
};
来源:
void PieChart::paint(QPainter *painter)
{
QPen pen(m_color, 2);
painter->setPen(pen);
painter->setRenderHints(QPainter::Antialiasing, true);
painter->drawPie(boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16);
}
我怎样才能派生出一个类型来与 QPainter 异步绘制(例如一条线)? 谢谢!
最佳答案
您有多种方式进行异步绘制:
1) 在某个时候(甚至可能在单独的线程中)将您的内容绘制到 QImage
中,然后在 QQuickPaintedItem::paint()
中,简单地绘制该图像.
2) 使用QtQuick Canvas .请注意,这是用 JavaScript 绘制的,而不是用 C++ 绘制的,但在幕后它实际上是 QPainter 命令。 Canvas 支持各种 render strategies ,除其他外在专用线程或渲染线程中进行绘图
关于c++ - 使用 QPainter 绘制的 QML 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22754416/