查看源代码 wxArtProvider (wx v2.4.3)

wxArtProvider 类用于自定义 wxWidgets 应用程序的外观。

当 wxWidgets 需要显示图标或位图时(例如在标准文件对话框中),它不会使用硬编码的资源,而是向 wxArtProvider 请求。这样,用户可以插入自己的 wxArtProvider 类,并轻松地用自己的版本替换标准艺术效果。

所有需要做的就是从 wxArtProvider 派生一个类,覆盖其 wxArtProvider::CreateBitmap()(在 wx 中未实现)和/或其 wxArtProvider::CreateIconBundle()(在 wx 中未实现)方法,并使用 wxArtProvider::Push()(在 wx 中未实现)注册提供程序。

如果您需要(相同艺术作品的)应以不同大小显示的位图图像,您可能应该考虑覆盖 wxArtProvider::CreateIconBundle (在 wx 中未实现)并提供包含不同位图大小的图标包。

还有另一种利用此类的方法:您可以在代码中使用它,并使用 getBitmap/2getIcon/2 提供的平台原生图标。

识别艺术资源

每个位图和图标包都在 wxArtProvider 中以唯一的 ID 识别,该 ID 在从中请求资源时使用。ID 由 ?wxArtID 类型表示,并且可以具有以下预定义值之一(您可以在 page_samples_artprov 中看到这些常量表示的位图)

此外,可以使用通过 wxArtProvider::Push (在 wx 中未实现) 注册的自定义艺术提供程序识别的任何字符串。

注意:在 GTK+ 2 下运行时,也可以使用 GTK+ 库存项 ID (例如 "gtk-cdrom"):有关 GTK+ 库存项的列表,请参阅 GTK+ 文档页面。也可以通过指定其名称(不带扩展名和目录组件)从当前图标主题加载图标。GTK+ 识别的图标主题遵循 freedesktop.org 图标主题规范。请注意,主题不能保证包含所有图标,因此 wxArtProvider 可能会返回 ?wxNullBitmap 或 ?wxNullIcon。默认主题通常安装在 /usr/share/icons/hicolor 中。

客户端

client 是调用 wxArtProvidergetBitmap/2getIcon/2 函数的实体。它由 wxClientID 类型表示,并且可以具有以下值之一

  • wxART_TOOLBAR

  • wxART_MENU

  • wxART_BUTTON

  • wxART_FRAME_ICON

  • wxART_CMN_DIALOG

  • wxART_HELP_BROWSER

  • wxART_MESSAGE_BOX

  • wxART_OTHER (用于所有不属于上述任何类别的请求)

客户端 ID 作为 wxArtProvider 的提示,旨在帮助它选择外观最佳的位图。例如,通常希望在菜单和工具栏中使用略有不同的图标,即使它们代表相同的操作(例如 wxART_FILE_OPEN)。请记住,这实际上只是对 wxArtProvider 的提示 - getBitmap/2 为不同的客户端值返回相同的位图是很常见的!

参见

wxWidgets 文档: wxArtProvider

概要

函数

查询已注册的提供程序,以获取具有给定 ID 的位图。

getBitmap/2 相同,但返回 wxIcon 对象(失败时返回 ?wxNullIcon)。

类型

-type wxArtProvider() :: wx:wx_object().

函数

-spec getBitmap(Id) -> wxBitmap:wxBitmap() when Id :: unicode:chardata().

等效于 getBitmap(Id, [])

链接到此函数

getBitmap(Id, Options)

查看源代码
-spec getBitmap(Id, [Option]) -> wxBitmap:wxBitmap()
                   when
                       Id :: unicode:chardata(),
                       Option :: {client, unicode:chardata()} | {size, {W :: integer(), H :: integer()}}.

查询已注册的提供程序,以获取具有给定 ID 的位图。

返回:如果注册的提供程序之一识别 ID,则返回位图,否则返回 wxNullBitmap。

-spec getIcon(Id) -> wxIcon:wxIcon() when Id :: unicode:chardata().

等效于 getIcon(Id, [])

-spec getIcon(Id, [Option]) -> wxIcon:wxIcon()
                 when
                     Id :: unicode:chardata(),
                     Option :: {client, unicode:chardata()} | {size, {W :: integer(), H :: integer()}}.

getBitmap/2 相同,但返回 wxIcon 对象(失败时返回 ?wxNullIcon)。