檢視原始碼 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)。