BorderImage QML 类型
根据图片绘制边框。 更多...
导入语句 | import QtQuick |
继承 |
属性
- asynchronous : bool
- border
- border.bottom : int
- border.left : int
- border.right : int
- border.top : int
- cache : bool
- currentFrame : int
- frameCount : int
- horizontalTileMode : enumeration
- mirror : bool
- progress : real
- smooth : bool
- source : url
- sourceSize : QSize
- status : enumeration
- verticalTileMode : enumeration
详细信息
BorderImage 类型用于通过缩放或平铺每个图片的部分来创建图像式边框。
BorderImage 将源图像(使用 source 属性指定)分成 9 个区域,如下所示
当图像被缩放时,源图像的区域会被缩放或平铺以创建显示的边框图像,方式如下
- 角落(区域 1、3、7 和 9)完全不缩放。
- 区域 2 和 8 根据 horizontalTileMode 缩放。
- 区域 4 和 6 根据 verticalTileMode 缩放。
- 中间(区域 5)同时根据 horizontalTileMode 和 verticalTileMode 缩放。
图像的区域使用 border 属性组定义,该属性组描述了从源图像的每个边缘到用作边框的距离。
用法示例
以下示例显示了不同模式对图像的影响。图像上叠加了引导线以显示图像的上述不同区域。
为了比较,这里使用简单的Image组件显示了未经缩放的图像。在这里,我们叠加了线条以显示如何使用BorderImage进行分割
Image { source: "pics/borderframe.png" anchors.centerIn: parent }
但是当使用BorderImage显示图像时,使用border属性来确定图像的哪些部分将位于未缩放的内角区域,以及哪些部分将水平垂直拉伸。然后,你可以给它一个比原始图像更大的大小。由于horizontalTileMode属性设置为BorderImage.Stretch,2号和8号区域内的图像部分在水平上被拉伸。因为verticalTileMode属性设置为BorderImage.Stretch,所以4号和6号区域内的图像部分在垂直上被拉伸。
BorderImage { anchors { fill: parent; margins: 1 } border { left: 30; top: 30; right: 30; bottom: 30 } horizontalTileMode: BorderImage.Stretch verticalTileMode: BorderImage.Stretch source: "pics/borderframe.png" }
再次使用一个大的BorderImage来显示图像。将horizontalTileMode属性设置为BorderImage.Repeat后,2号和8号区域内的图像部分被平铺以填充项目的顶部和底部空间。类似地,将verticalTileMode属性设置为BorderImage.Repeat,所以4号和6号区域内的图像部分被平铺以填充项目的左右空间。
BorderImage { anchors { fill: parent; margins: 1 } border { left: 30; top: 30; right: 30; bottom: 30 } horizontalTileMode: BorderImage.Repeat verticalTileMode: BorderImage.Repeat source: "pics/borderframe.png" }
在某些情况下,2号和8号区域的宽度可能不是源图像中对应区域宽度的精确倍数。类似地,4号和6号的高度可能不是对应区域高度的精确倍数。如果你使用BorderImage.Round模式,它将选择一个整数张图像并缩小以适应。
BorderImage { anchors { fill: parent; margins: 6 } border { left: 30; top: 30; right: 30; bottom: 30 } horizontalTileMode: BorderImage.Round verticalTileMode: BorderImage.Round source: "pics/borderframe.png" }
在Qt Quick 示例 - 图像元素中的Border Image示例展示了如何使用BorderImage在矩形项上模拟阴影效果。
图像加载
根据原始位置,源图像可能不会立即加载。可以使用progress属性来监控加载进度。
另请参阅Image和AnimatedImage。
属性文档
此属性描述了如何重复或拉伸边框图像的中间部分。
常量 | 描述 |
---|---|
BorderImage.Stretch | 将图像缩放以适应可用区域。 |
BorderImage.Repeat | 平铺图像,直到没有更多空间。可能会裁剪最后一张图像。 |
BorderImage.Round | 与Repeat类似,但会缩小图像以确保最后一个图像不会被裁剪。 |
每个属性的默认平铺模式为BorderImage.Stretch。
currentFrame是当前可见的帧。默认值为0
。如果您要显示包含多个帧的图像的不同帧,则可以将其设置为介于0
和frameCount - 1
之间的数字。
frameCount是图像中的帧数。大多数图像只有一帧。
asynchronous : bool |
指定本地文件系统上的图片应在单独的线程中异步加载。默认值是false,导致用户界面线程在图片加载时阻塞。将异步设置为true是在保持响应式用户界面比立即显示图片更可取时有用。
请注意,此属性仅适用于从本地文件系统读取的图片。通过网络资源(例如HTTP)加载的图片始终异步加载。
如下所示,4条边框线(2条水平和2条垂直)将图片分成9个部分
每条边框线(左、右、上和下)指定从源图像对应边起像素偏移量。默认情况下,每条边框线的值为0。
例如,以下定义设置了从图像底部向上10像素的底部线
BorderImage { border.bottom: 10 // ... }
边框线也可以使用.sci文件指定。
cache : bool |
指定是否应该缓存图片。默认值是true。当处理大图片时,将cache
设置为false是有用的,以确保不会以牺牲小的"ui元素"图片为代价来缓存它们。
mirror : bool |
此属性保存图片是否水平翻转(实际显示镜像图像)。
默认值是false。
smooth : bool |
此属性保存图像在缩放或转换时是否平滑过滤。平滑过滤提供更好的视觉质量,但在某些硬件上可能较慢。如果图像以自然大小显示,此属性没有视觉或性能效果。
默认情况下,此属性设置为true。
source : url |
此属性保存指向源图像的URL。
BorderImage可以处理Qt支持的任何图像格式,可以从Qt支持的任何URL方案加载。
此属性也可以用于引用.sci文件,这些文件是以QML特定的基于文本的格式编写的,用于指定边框、图像文件和给定边框图片的平铺规则。
以下.sci文件将边框设置为图像picture.png的每一侧为10
border.left: 10 border.top: 10 border.bottom: 10 border.right: 10 source: "picture.png"
URL可以是绝对的,也可以是相对于组件的URL。
另请参阅 QQuickImageProvider.
sourceSize : QSize |
status : 枚举类型 |
此属性描述了图像的加载状态。它可以是指以下之一:
常量 | 描述 |
---|---|
BorderImage.Null | 没有设置图像 |
BorderImage.Ready | 图像已加载 |
BorderImage.Loading | 图像正在加载中 |
BorderImage.Error | 加载图像时发生错误 |
另请参阅 progress。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献享有各自所有者的版权。本提供的文档是根据Free Software Foundation发布的、受GNU自由文档许可(GPL)1.3版条款许可的。Qt及其相关商标为芬兰The Qt Company Ltd.和/或世界其他国家的商标。所有其他商标均为各自所有者的财产。