提问人:fragsalat 提问时间:11/8/2023 更新时间:11/8/2023 访问量:22
在 Windows 上的 GTK4 应用程序中渲染 SVG 图标
Rendering SVG icons in GTK4 apps on Windows
问:
我想知道在 Windows 上的 gtk-rs (GTK4) 中渲染主题感知图标需要什么。我在资源中添加了图标,可以成功渲染 PNG 文件。直接替换 SVG 不会渲染任何内容。 是否可以像在 Web 开发中那样使用图标字体?如果是这样,如何在 gtk4 中添加自定义字体?
我的文件夹结构
[root]
resources/
icons/
scalable/
actions/
svgicon.svg
pngicon.png
gresources.xml
src/
main.rs
window.ui
window.rs
build.rs
Cargo.toml
gresources.xml
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/myapp/gui/">
<file compressed="true">icons/scalable/actions/pngicon.png</file>
<file compressed="true">icons/scalable/actions/svgicon.svg</file>
</gresource>
</gresources>
窗口.ui
<child>
<object class="GtkPicture">
<property name="file">resource:///myapp/gui/icons/scalable/actions/svgicon.svg</property>
<property name="width-request">100</property>
<property name="height-request">100</property>
</object>
</child>
<child>
<object class="GtkPicture">
<property name="file">resource:///myapp/gui/icons/scalable/actions/pngicon.png</property>
<property name="width-request">100</property>
<property name="height-request">100</property>
</object>
</child>
如前所述,png 图像呈现,但 svg 不呈现。我读到人们可以使用 librsvg 在 Windows 上渲染 svg,但由于 Windows 上缺少 libxml2,这无法编译。我想知道为什么这如此成问题,以及 freedesktop(默认图标)是如何在 gtk 中构建和渲染的?
提前感谢您的帮助
答:
0赞
fragsalat
11/8/2023
#1
幸运的是,我现在可以自己回答我的答案了。在 gtk-rs 的 rustbook 的末尾,它解释了如何使用 libadwita(我对此不感兴趣),并在那里解释了 librsvg 也可以使用 gvsbuild 工具构建,类似于 gtk4 已经构建gvsbuild build libadwaita librsvg
构建这个库立即解决了我无法加载 svg 的问题。
评论