如何将符号 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)
我正在更新一个 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)