操作几何形状对象变换,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 clicked
import QtQuick
Image {
id: root
signal clicked
MouseArea {
anchors.fill: parent
onClicked: root.clicked()
}
}
我们使用我们的点击图像来呈现三个对象(框,圆,三角形)。每个对象在单击时执行一个简单的转换。点击背景将重置场景。
- 圆圈在每次单击时增加
x
位置 - 方框将在每次单击时旋转。
- 三角形将在每次单击时旋转并放大图像,以演示组合变换。
对于缩放和旋转操作,我们设置 antialiasing: true
以启用抗锯齿,出于性能原因将其关闭(与剪辑属性剪辑相同)。
在您自己的工作中,当您在图形中看到一些光栅化边缘时,您可能应该切换平滑。
:::success
为了在缩放图像时获得更好的视觉质量,建议按比例缩小而不是放大。
用一个更大的比例因子缩放图像将导致缩放伪影(模糊图像)。
当缩放图像时,你应该考虑使用smooth: true
,以以性能为代价使用更高质量的过滤器.
这是因为框将出现在后面的代码中。这同样适用于鼠标区域。代码后面的鼠标区域将与代码前面的鼠标区域重叠(从而捕获鼠标事件)。
请记住:文档中元素的顺序很重要。
:::