操作几何形状对象变换,QML 项目通常可以被平移旋转缩放。这些操作有一种简单的形式和一种更高级的方法。
    让我们从简单的变换开始。这是我们的场景作为我们的起点。

    • 平移:简单的平移通过更改 x,y 位置来完成。
    • 旋转:旋转是使用旋转(rotation)属性完成的。该值以度数 (0 ... 360) 提供。
    • 缩放: 缩放是使用 scale 属性完成的,值 <1 表示元素被缩小,>1 表示元素被放大。

    旋转和缩放不会改变项目的几何形状:xy 和宽度/高度(width/height)没有改变;只有绘画指令被转换。
    在我们展示这个例子之前,我想介绍一个小帮手:Clickable Image 元素。Clickable Image 只是一个带有鼠标区域的图像。这带来了一个有用的经验法则——如果你已经复制了一段代码 3 次,请将其提取到一个组件中。

    1. // ClickableImage.qml
    2. // Simple image which can be clicked
    3. import QtQuick
    4. Image {
    5. id: root
    6. signal clicked
    7. MouseArea {
    8. anchors.fill: parent
    9. onClicked: root.clicked()
    10. }
    11. }

    我们使用我们的点击图像来呈现三个对象(框,圆,三角形)。每个对象在单击时执行一个简单的转换。点击背景将重置场景。
    动画.gif

    • 圆圈在每次单击时增加x位置
    • 方框将在每次单击时旋转。
    • 三角形将在每次单击时旋转并放大图像,以演示组合变换。

    对于缩放和旋转操作,我们设置 antialiasing: true 以启用抗锯齿,出于性能原因将其关闭(与剪辑属性剪辑相同)。
    在您自己的工作中,当您在图形中看到一些光栅化边缘时,您可能应该切换平滑。 :::success 为了在缩放图像时获得更好的视觉质量,建议按比例缩小而不是放大。
    用一个更大的比例因子缩放图像将导致缩放伪影(模糊图像)。
    动画.gif
    当缩放图像时,你应该考虑使用smooth: true,以以性能为代价使用更高质量的过滤器.
    这是因为框将出现在后面的代码中。这同样适用于鼠标区域。代码后面的鼠标区域将与代码前面的鼠标区域重叠(从而捕获鼠标事件)。
    请记住:文档中元素的顺序很重要。 :::