Office Ribbon大大小小的图像

时间:2018-09-25 07:01:14

标签: excel vba office365 ribbon

办公室功能区中的图像可以大(32x32)或小(16x16)。如果将它们指定为大,但窗口太窄而无法容纳它们,则它们会自动变小。默认情况下,这些只是较大图像的压缩版本。

有一份办公设计文档(自消失以来)建议人们应该正确设计小图标,并且它们不应该只是大图标的小版本,因为压缩为16x16并不总是很好。非常明智。

但是实际上有人用XML做到了吗? Button之类的元素似乎只具有一个图像属性。我希望有两个largeImage和smallImage(例如)。

这真的需要可怕的回叫吗?在这种情况下,如何捕捉色带决定调整图像大小的事件? (由于多种原因,丝带回叫与VBA混在一起。)

1 个答案:

答案 0 :(得分:2)

Ribbon XML在其定义中没有选择指定大图标和小图标的选项。如果使用image属性,则只能提供一张图片。

也没有办法知道Office是否/何时减小功能区的大小。您必须进行一些研究,检查哪个窗口宽度触发了调整大小,然后可以使用Application对象的WindowResize事件使控件无效,更改图片(可能还有控件的大小)

要提供多个图标,您需要使用回调属性getImage来告诉Ribbon使用哪个图片。这不像传递存储在Office文档中的文件的字符串值那样简单,因为回调函数需要一个IPictureDisp对象。该图像将需要作为文件存储在Office文档之外。

在本文结尾处的Customizing the 2007 Office Fluent Ribbon for Developers (Part 1 of 3)中描述了使用getImage的复杂性,但是其中提供的代码是针对.NET Framework的。

使用VBA编写代码实际上要容易一些,因为提供stdOle的{​​{1}}库是一个办公库。您需要设置对库的引用-在VBA编辑器的工具/参考中,该库的标签为IPictureDisp。请注意,这不适用于png图形文件格式-库有点旧...

OLE Automation