在 Windows 上的 GTK4 应用程序中渲染 SVG 图标

问题描述 投票:0回答:1

我想知道在 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 上渲染 svgs,但是由于 Windows 上缺少 libxml2,因此无法编译。我想知道为什么这个问题如此之大,以及 freedesktop(默认图标)是如何在 gtk 中构建和渲染的?

提前感谢您的帮助

windows svg gtk gtk4 gtk-rs
1个回答
0
投票

幸运的是我现在可以自己回答我的答案了。在 gtk-rs 的 rustbook 的末尾,它解释了如何使用 libadwita (我对此不感兴趣),并解释了 librsvg 也可以使用 gvsbuild 工具构建,类似于 gtk4 已构建

gvsbuild build libadwaita librsvg

构建这个库立即解决了我无法加载 svgs 的问题。

© www.soinside.com 2019 - 2024. All rights reserved.