首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用镜像变换翻转/反射QML控件

应用镜像变换翻转/反射QML控件
EN

Stack Overflow用户
提问于 2018-12-09 10:28:36
回答 2查看 3.7K关注 0票数 2

可以在QML中水平翻转/反射形状项。例如,我的形状如下:

我是否可以水平地翻转/反映它以产生:

我知道我可以编辑我的QML代码来绘制不同的线条,但是如果可能的话,只使用QML动画或者其他什么东西就会简单得多。

代码语言:javascript
复制
Shape {
    id: annotationHLine;
    anchors.left: annotationShp.right;
    anchors.top: annotationShp.top;
    anchors.topMargin: annotationShp.height * 0.5;

    ShapePath {
        strokeWidth: 2;
        strokeColor: "Green";
        fillColor: "transparent";
        startX: -slant; startY: 0;
        PathLine { x: relativeTargetX*0.5; y: 0 }
        PathLine { x: relativeTargetX; y: relativeTargetY }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-09 11:14:28

是的,您可以,只需将水平镜像转换矩阵设置为形状:

代码语言:javascript
复制
transform: Matrix4x4 {
      matrix: Qt.matrix4x4(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
    }

编辑:

x的位置并没有真正改变,它仍然是一样的,只是对象现在是用转换呈现的。您可以通过在矩阵的顶部堆叠一个转换来弥补这一点:

代码语言:javascript
复制
transform: [
  Matrix4x4 {
    matrix: Qt.matrix4x4(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
  },
  Translate {
    x: annotationHLine.width
  }
]

编辑2:

实际上,您可以将翻译合并到原始矩阵中,以简化一些事情:

代码语言:javascript
复制
transform:  Matrix4x4 {
    matrix: Qt.matrix4x4( -1, 0, 0, but.width, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)}
  }
票数 3
EN

Stack Overflow用户

发布于 2019-05-07 09:36:44

您可以使用转换和缩放。

代码语言:javascript
复制
transform: Scale{ xScale: -1 }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53691351

复制
相关文章

相似问题

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