gtk 图像按钮缩放图像和处理大小请求

问题描述

我正在尝试使用一些包含具有以下属性的图像 (pixbuf) 的按钮:

  • 按钮的宽度由其父级决定,在我的情况下,它采用均匀大小的网格中的列的全宽
  • 一个按钮显示一个像素缓冲区
  • 这样的 pixbuf 被均匀缩放,以便使用整个按钮宽度

因此,按钮的高度必须根据其父级确定的宽度和包含的 pixbuf 的纵横比来选择。不幸的是,我无法找到一个干净的解决方案来实现这种行为。

我目前的做法是使用按钮的大小分配信号来缩放pixbuf。虽然如果我只使用按钮的分配,这种方法会起作用,但在上述情况下,我只想使用分配的宽度来确定给定 pixbuf 的纵横比使用的高度。因此,信号处理程序能够将图像的高度设置为违反按钮当前高度的高度。这是不合法的,因为在确定按钮所需的空间时应使用纵横比,而不是在已分配空间时使用。使用我的非法方法,按钮太小而无法显示图像,并且只有在用户交互以某种方式更新时才会调整到所需的大小(排队重绘或分配不能解决这个问题)。

我想使用一种方法,我使用将分配给按钮的宽度来确定分配前的高度。我找不到有用的信号来这样做,因为首选大小等仅设置为特定值,而据我所知,无法链接到某些信号。

另一种方法是使用 AspectFrame。我真的不想使用它,因为它增加了额外的复杂性,因为每次加载图像时都必须设置它的比率,只是为了启用按钮的动态高度。 更新:它也不起作用,因为它会缩小以适应而不是扩展。

使用硬尺寸请求似乎不是一个好主意,因为宽度取决于父小部件。

我尝试对按钮进行子类化,但发现对于 Rust 绑定 gtk-rs 按钮当前不可子类化。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)