操作几何形状对象变换,QML 项目通常可以被平移、旋转和缩放。这些操作有一种简单的形式和一种更高级的方法。
让我们从简单的变换开始。这是我们的场景作为我们的起点。
- 平移:简单的平移通过更改
x,y位置来完成。 - 旋转:旋转是使用旋转
(rotation)属性完成的。该值以度数(0 ... 360)提供。 - 缩放: 缩放是使用
scale属性完成的,值<1表示元素被缩小,>1表示元素被放大。
旋转和缩放不会改变项目的几何形状:x、y 和宽度/高度(width/height)没有改变;只有绘画指令被转换。
在我们展示这个例子之前,我想介绍一个小帮手:Clickable Image 元素。Clickable Image 只是一个带有鼠标区域的图像。这带来了一个有用的经验法则——如果你已经复制了一段代码 3 次,请将其提取到一个组件中。
// ClickableImage.qml// Simple image which can be clickedimport QtQuickImage {id: rootsignal clickedMouseArea {anchors.fill: parentonClicked: root.clicked()}}
我们使用我们的点击图像来呈现三个对象(框,圆,三角形)。每个对象在单击时执行一个简单的转换。点击背景将重置场景。
- 圆圈在每次单击时增加
x位置 - 方框将在每次单击时旋转。
- 三角形将在每次单击时旋转并放大图像,以演示组合变换。
对于缩放和旋转操作,我们设置 antialiasing: true 以启用抗锯齿,出于性能原因将其关闭(与剪辑属性剪辑相同)。
在您自己的工作中,当您在图形中看到一些光栅化边缘时,您可能应该切换平滑。
:::success
为了在缩放图像时获得更好的视觉质量,建议按比例缩小而不是放大。
用一个更大的比例因子缩放图像将导致缩放伪影(模糊图像)。
当缩放图像时,你应该考虑使用smooth: true,以以性能为代价使用更高质量的过滤器.
这是因为框将出现在后面的代码中。这同样适用于鼠标区域。代码后面的鼠标区域将与代码前面的鼠标区域重叠(从而捕获鼠标事件)。
请记住:文档中元素的顺序很重要。
:::
