首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何得到QQuickItem的变换矩阵?

如何得到QQuickItem的变换矩阵?
EN

Stack Overflow用户
提问于 2015-02-16 06:15:43
回答 2查看 2K关注 0票数 5

我在QGraphicsItem工作了很长时间,它有transform()功能。现在,我不打算用QQuickItem做同样的事情,但不幸的是,它错过了transform()。那么,我的问题--如何得到QQuickItem的变换矩阵?

EN

回答 2

Stack Overflow用户

发布于 2017-09-29 08:24:58

下面是一个正确的解决方案,基于迈克尔之前提供的代码,但实际上已经修复了,所以您不必花20分钟来研究如何使用QQmlListProperty

代码语言:javascript
复制
QMatrix4x4 YourQQuickItem::get_model_matrix() {
    QMatrix4x4 result;

    // Compose model matrix from our transform properties in the QML
    QQmlListProperty<QQuickTransform> transformations = transform();
    const int count = transformations.count(&transformations);
    for (int i=0; i<count; i++) {
        QQuickTransform *transform = transformations.at(&transformations, i);
        transform->applyTo(&result);
    }

    return result;
}

在我的用例中,我用它得到对象的模型矩阵,然后与视图和投影矩阵相乘,计算模型-视图-投影矩阵。

票数 2
EN

Stack Overflow用户

发布于 2015-02-16 06:52:19

QSGTransformNode类在场景图中实现转换。在updatePaintNode函数中,参数updatePaintNodeData提供了指向与此QQuickItem关联的QSGTransformNode的指针。

代码语言:javascript
复制
QSGNode *MyQuickItem::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *data)
{
     QSGTransformNode *transformNode = data->transformNode;
     qDebug() << transformNode->matrix();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28535528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档