如何将符号 GtkIconSize 转换为以像素为单位的整数大小?

How do I convert a symbolic GtkIconSize to an integer size in pixels?

我正在更新一个 GTK+ 程序,试图将所有使用 "stock ids" 的 "stock icons" 实例替换为使用 "icon-name" 属性 的图标。我有点困惑的地方是如何获取图标的大小。

我有一些代码使用 gtk_render_icon_pixbuf 函数从带有库存图标的图像中获取 pixbuf:

if image.storage_type == 'STOCK' then
    return image:render_icon_pixbuf(image.stock, image.icon_size)
end

现在,我想为使用 icon_name 而不是股票 ID 的图像制作与此代码等效的代码。我尝试使用 gtk_icon_theme_load_icon 函数:

if image.storage_type == 'ICON_NAME' then
   local icon_theme = Gtk.IconTheme.get_default()
   return icon_theme:load_icon(image.icon_name, image.icon_size, 0, nil)

但是,图标尺寸显示错误(它始终是可用的最小图标尺寸)。我认为这是因为 icon-size 属性 是 GtkIconSize 枚举中的符号值,而 gtk_icon_theme_load_icon 需要以像素为单位的图标大小。

有没有办法将 GtkIconSize 转换为以像素为单位的值?

或者也许我应该用其他 属性 而不是 icon-size 来指定我的图标大小?

您可以使用 gtk_icon_size_lookup 函数将符号图标大小转换为以像素为单位的长度。

在lgi中可以这样调用:

local width, height = Gtk.icon_size_lookup(image.icon_size)