BorderImage QML 类型

根据图片绘制边框。 更多...

导入语句import QtQuick
继承

Item

属性

详细信息

BorderImage 类型用于通过缩放或平铺每个图片的部分来创建图像式边框。

BorderImage 将源图像(使用 source 属性指定)分成 9 个区域,如下所示

当图像被缩放时,源图像的区域会被缩放或平铺以创建显示的边框图像,方式如下

图像的区域使用 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属性来监控加载进度。

另请参阅ImageAnimatedImage

属性文档

horizontalTileMode : 枚举

verticalTileMode : 枚举

此属性描述了如何重复或拉伸边框图像的中间部分。

常量描述
BorderImage.Stretch将图像缩放以适应可用区域。
BorderImage.Repeat平铺图像,直到没有更多空间。可能会裁剪最后一张图像。
BorderImage.Round与Repeat类似,但会缩小图像以确保最后一个图像不会被裁剪。

每个属性的默认平铺模式为BorderImage.Stretch。


currentFrame : int

frameCount : int [只读]

currentFrame是当前可见的帧。默认值为0。如果您要显示包含多个帧的图像的不同帧,则可以将其设置为介于0frameCount - 1之间的数字。

frameCount是图像中的帧数。大多数图像只有一帧。


asynchronous : bool

指定本地文件系统上的图片应在单独的线程中异步加载。默认值是false,导致用户界面线程在图片加载时阻塞。将异步设置为true是在保持响应式用户界面比立即显示图片更可取时有用。

请注意,此属性仅适用于从本地文件系统读取的图片。通过网络资源(例如HTTP)加载的图片始终异步加载。


边框组

border.bottom : int

border.left : int

border.right : int

border.top : int

如下所示,4条边框线(2条水平和2条垂直)将图片分成9个部分

每条边框线(左、右、上和下)指定从源图像对应边起像素偏移量。默认情况下,每条边框线的值为0。

例如,以下定义设置了从图像底部向上10像素的底部线

BorderImage {
    border.bottom: 10
    // ...
}

边框线也可以使用.sci文件指定。


cache : bool

指定是否应该缓存图片。默认值是true。当处理大图片时,将cache设置为false是有用的,以确保不会以牺牲小的"ui元素"图片为代价来缓存它们。


mirror : bool

此属性保存图片是否水平翻转(实际显示镜像图像)。

默认值是false。


progress : real [只读]

此属性保存图片加载的进度,从0.0(没有加载)到1.0(完成)。

另请参阅 status.


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[只读]

此属性保存已加载图像的实际宽度和高度。

BorderImage中,此属性是只读的。

另请参阅 Image::sourceSize.


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.和/或世界其他国家的商标。所有其他商标均为各自所有者的财产。