| 文章 ID | : | 288771 |
| 最后更新日期 | : | 2004年4月13日 |
| 版本 | : | 1.0 |
概要
自动化客户端(或 COM 加载项)通常需要向 Office 应用程序的工具栏或菜单添加一个按钮,并需要为该按钮图像关联一个图片。Office 公开了 CommandBars 集合和一个 CommandBarButton 对象,以允许编程人员以编程方式添加按钮;但是如果用户需要自定义图像,则很难提供一个保持透明背景的图像。
本文介绍如何向剪贴板中添加按钮图标和按钮屏蔽,以便 CommandBarButton 的 PasteFace 方法可以通过一种允许以透明背景绘制的方式存储位图。还介绍如何动态地创建透明屏蔽,以便您不必跟踪两个单独的位图。
本文介绍如何向剪贴板中添加按钮图标和按钮屏蔽,以便 CommandBarButton 的 PasteFace 方法可以通过一种允许以透明背景绘制的方式存储位图。还介绍如何动态地创建透明屏蔽,以便您不必跟踪两个单独的位图。
更多信息
Office CommandBarButtons 对它们的图像使用简单的位图。尽管这样做可以快速有效地呈现 Office CommandBars,但是也使得添加自定义图像变得比较困难,因为简单位图不保留透明度信息。要使图像显示为透明,需要一个单色位图“屏蔽”,以便让 Office 知道图像的哪些部分需要着色,哪些部分需要保持透明。当您在 Office 自身中编辑位图图像时,将会为您自动完成这一操作。当您以编程方式使用 Office 时,您需要自己提供屏蔽。
需要向 CommandBarButton 添加图像的自动化客户端通常使用 PasteFace 方法。由于此方法只使用简单位图,因此为了传递正确的透明度信息,您需要添加一个包含当前图像的屏蔽的特殊剪贴板格式。如果提供了此格式,Office 将以透明方式呈现图像。
Office XP 为 CommandBarButtons 提供了一个新的图片和屏蔽属性。这就使得进程内客户端(如宏代码或 COM 加载项)可以直接向按钮指派 StdPicture 对象而不使用剪贴板。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
为了与当前的 Office 指导原则保持兼容,用于自定义 CommandBarButton 图片的位图图像应该是 256 色与设备无关的位图 (DIB),其大小应不超过 16 x 16 像素。您可以使用任何图形编辑器来创建这些位图,前提条件是,它可以将图像保存为标准的 Windows 位图(.bmp 或 .dib)文件;但要确保不要使用增强色图像,因为这些图像在某些分辨率较低的系统上可能会失真。此外,还要选择一种您的主要图像上不大可能出现的颜色,如洋红色(RGB:255、0、255),并使用它来填充那么您希望保持透明的区域。
要生成透明度屏蔽并将它添加到剪贴板中,您需要使用 Win32 应用程序编程接口 (API)。此示例假设您在 Microsoft Visual Basic 中工作,但也可以修改代码以在 Microsoft Visual C++ 中工作。
需要向 CommandBarButton 添加图像的自动化客户端通常使用 PasteFace 方法。由于此方法只使用简单位图,因此为了传递正确的透明度信息,您需要添加一个包含当前图像的屏蔽的特殊剪贴板格式。如果提供了此格式,Office 将以透明方式呈现图像。
Office XP 为 CommandBarButtons 提供了一个新的图片和屏蔽属性。这就使得进程内客户端(如宏代码或 COM 加载项)可以直接向按钮指派 StdPicture 对象而不使用剪贴板。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
286460 HOWTO:Set the Mask and Picture Properties for Office XP CommandBars
但是,由于 Office 以外的限制,这种方法对进程外的自动化客户端不起作用,对需要与较低版本的 Office 保持兼容的客户端也不起作用。在这些情况下,类似于以下内容的代码仍然是适用的。
为了与当前的 Office 指导原则保持兼容,用于自定义 CommandBarButton 图片的位图图像应该是 256 色与设备无关的位图 (DIB),其大小应不超过 16 x 16 像素。您可以使用任何图形编辑器来创建这些位图,前提条件是,它可以将图像保存为标准的 Windows 位图(.bmp 或 .dib)文件;但要确保不要使用增强色图像,因为这些图像在某些分辨率较低的系统上可能会失真。此外,还要选择一种您的主要图像上不大可能出现的颜色,如洋红色(RGB:255、0、255),并使用它来填充那么您希望保持透明的区域。
要生成透明度屏蔽并将它添加到剪贴板中,您需要使用 Win32 应用程序编程接口 (API)。此示例假设您在 Microsoft Visual Basic 中工作,但也可以修改代码以在 Microsoft Visual C++ 中工作。
复制透明的 Office 工具栏图片
| 1. | 使用 Microsoft 画图(或第三方图像编辑器)通过您选择的设计创建一个 256 色位图。图像的宽和高都不应超过 16 像素。 |
| 2. | 用洋红色(RGB:255、0、255)填充您希望保持透明的所有位图区域,然后将位图保存为 C:\MyTestPic.bmp。 |
| 3. | 启动 Visual Basic 并创建一个新的标准项目。默认情况下会创建 Form1。 |
| 4. | 向 Form1 中添加一个按钮,然后将以下代码添加到该按钮的 Click 事件中:
|
| 5. | 在项目菜单上,单击添加模块,并将以下代码粘贴到新模块的代码窗口中:
|
| 6. | 按 F5 键运行 Visual Basic 应用程序。单击命令按钮以自动运行 Word,添加一个新工具栏和按钮,并粘贴透明的位图图像。 |
浙公网安备 33010602011771号