qt - 如何在 QML 上使用 9 个补丁 png 图像?
问题描述
我正在使用 QML 制作用户界面。
我被要求为这个 UI 使用 9.png 图像文件。
此图像的大小为 82X94 像素,我必须将此图像用于 1280X92 背景。
我在下面写了源代码。
Image {
id: bgMode
x: 0; y: 0
width: 1280; height: 92
source: "qrc:/res/img/bg_mode.9.png"
}
但是,此代码在垂直拉伸图像时会破坏图像。
我应该拉伸图像而不使它像粘糊糊的面团。
我以为会有一些程序可以编辑 9 个补丁图像文件。
所以我用谷歌搜索并找到了这个。
但是,我无法使用 JRE 运行该程序。
错误消息说它找不到“com.alee.extended.ninepatch.NinePatchEditorFrame”。
我在这里放弃了使用这个程序。
如果 QML 支持 9 个补丁图像,我用谷歌搜索。
图像样式类型似乎相关,但我无法弄清楚如何实际使用它。
这个 stackoverflow 页面推荐 BorderImage 类型。所以我在下面写了源代码。
BorderImage {
id: bgMode
x: 0
y: 0
width: 1280; height: 92
verticalTileMode: BorderImage.Round
horizontalTileMode: BorderImage.Stretch
border.left: 1; border.right: 1
source: "qrc:/res/img/bg_mode.9.png"
}
但是这段代码仍然破坏了图像。
如何在 QML 上使用 9 个补丁图像?
我有什么遗漏或做错了吗?
解决方案
在 Qt 文档页面上,您有很好的解释。https://doc.qt.io/qt-5/qml-qtquick-borderimage.html 您唯一需要知道的是这两条垂直线和两条水平线的放置位置(距图像边缘的距离)。
border { left: 30; top: 30; right: 30; bottom: 30 }
图像将被分成 9 个区域。如果您不想水平拉伸它们但重复使用horizontalTileMode: BorderImage.Repeat
属性。此处列出了其他模式https://doc.qt.io/qt-5/qml-qtquick-borderimage.html#horizontalTileMode -prop
推荐阅读
- laravel - Laravel Sanctum:向任何域/主机发送 cookie
- python - 查找掩码 CI/CD 变量的值
- windows - Visual C++ 6.0 根据构建目录构建不同的程序
- java - Java elseif 不工作的问题(初学者代码)
- kotlin-multiplatform - 无法启动依赖于暴露库的新 kotlin 多平台库
- json - Powershell 从嵌套 JSON 导出数据
- .net-core - 更改 Blazor 服务器应用程序中的基本路径
- c# - 按空格键继续
- kotlin - Kotlin 集合:在 null/empty/blank 的早期“爆发”
- c++ - ninja: error: build.ninja: bad $-escape (字面 $ 必须写成 $$)