共用方式為


關於圖示

系統會使用整個使用者介面的圖示來代表物件,例如檔案、資料夾、快捷方式、應用程式和檔。 圖示函式可讓應用程式建立、載入、顯示、排列、動畫及終結圖示。 如需指定檔案類型圖示的資訊,請參閱 extractIcon

本概觀提供下列主題的相關信息:

圖示熱點

圖示中的其中一個像素會指定為 作用點,這是系統追蹤並辨識為圖示位置的點。 圖示的熱點通常是位於圖示中央的圖元。 如果您使用 CreateIconIndirect 函式來建立圖示,您可以指定要成為熱點的任何圖元。

圖示類型

作系統提供一組標準圖示,可供任何應用程式隨時使用。 軟體開發工具包(SDK)頭檔包含 系統圖示的標識符 — 這些標識符以 IDI_ 前綴開頭。

價值 意義
IDI_APPLICATION
MAKEINTRESOURCE(32512)
預設應用程式圖示
IDI_ERROR
MAKEINTRESOURCE(32513)
錯誤圖示
IDI_QUESTION
MAKEINTRESOURCE(32514)
問號圖示
IDI_WARNING
MAKEINTRESOURCE(32515)
警告圖示
IDI_INFORMATION
MAKEINTRESOURCE(32516)
信息圖示
IDI_WINLOGO
MAKEINTRESOURCE(32517)
Windows 標誌圖示
IDI_SHIELD
MAKEINTRESOURCE(32518)
安全性防護圖示

如需標準圖示建議使用方式的相關信息,請參閱 指導方針

此外,從 Windows Vista 開始,透過 SHGetStockIconInfo 方法,即可透過 SHGetStockIconInfo 方法取得一組額外的 標準系統殼層 圖示。

自定義圖示 是專為在特定應用程式中使用而設計,而且可以是任何設計。 使用者可以從檔案載入自定義圖示,或在運行時間建立它們。 以下是數個自定義圖示。

數個自定義圖示

圖示大小

系統使用四個圖示大小:

  • 系統小型
  • 大型系統
  • 殼層小型
  • 殼層大型
  • 巨無霸(自 Windows Vista 開始)

系統小型圖示 會顯示在視窗標題中。

如需應用程式慣用圖示大小的建議,請參閱 圖示調整

變更系統小型圖示的大小

  1. 在 [控制面板] 中,按一下 [顯示],然後按一下 [外觀索引標籤]。
  2. 從 [項目] 列表中選取 [標題按鈕],然後設定 [大小] 欄位。

擷取系統小型圖示的大小

系統大型圖示 主要用於應用程式,但它也會顯示在 [Alt+Tab] 對話框中。 CreateIconFromResourceDrawIconExtractAssociatedIconExtractIconExtractIconExLoadIcon 函式全都使用系統大型圖示。 系統大型圖示的大小是由視訊驅動程式所定義,因此無法變更。

擷取系統大型圖示的大小

CreateIconCreateIconFromResourceExCreateIconIndirectSHGetFileInfo 函式可用來處理系統大型以外的圖示。

在 Windows 檔案總管和一般對話方塊中,殼層小型圖示 被使用。 目前,這會預設為系統大小較小。

擷取殼層小型圖示的大小

  1. 使用 SHGetFileInfo 函式搭配 SHGFI_SHELLICONSIZE | SHGFI_SMALLICON 取得系統映像清單的控制代碼。
  2. 然後呼叫 ImageList_GetIconSize 函式以取得圖示大小。

殼層大型圖示會在桌面上使用。

變更大型圖示的大小

  1. 從 [控制面板] 中,點擊 [顯示],然後點擊 [外觀] 索引標籤,
  2. 從 [專案] 列表中選取 [圖示],然後設定 [Size] 字段(此大小儲存在登錄的 HKEY_CURRENT_USER\Control Panel底下,Desktop\WindowMetrics\Shell 圖示大小]。
  3. 按一下 Plus! 標籤頁,然後選取 使用大型圖示 複選框。

擷取殼層大型圖示的大小

  1. 使用 SHGetFileInfo 函式搭配 SHGFI_SHELLICONSIZE 擷取系統影像清單的控制代碼。
  2. 然後呼叫 ImageList_GetIconSize 函式以取得圖示大小。

填入要用於註冊視窗類別的 WNDCLASSEX 結構時,請將 hIcon 成員設定為系統大型圖示 (通常為 32x32),並將 hIconSm 成員設定為系統小型圖示 (通常是 16x16)。 如需類別圖示的詳細資訊,請參閱 類別圖示

圖示建立

標準圖示已預先定義,因此不需要加以建立。 若要使用標準圖示,應用程式可以使用 LoadImage 函式來取得其句柄。 圖示句柄 是一個 HICON 類型的唯一值,用來識別標準或自定義的圖示。

若要為應用程式建立自定義圖示,您通常會使用圖形應用程式,並在應用程式的資源定義檔案中包含 ICON 資源。 在運行時間,您可以呼叫 LoadIconLoadImage 來擷取圖標的句柄。 圖示資源可以包含數個不同顯示裝置的影像群組。 LoadIconLoadImage 會自動從目前顯示裝置的群組中選取最適當的圖示。

應用程式也可以使用 createIconIndirect 函式,在運行時間建立自定義圖示,此函式會根據 ICONINFO 結構的內容來建立圖示。 GetIconInfo 函式會填滿結構,包含熱點座標與關於圖示位掩碼位圖及色彩位圖的資訊。

應用程式應該實作自定義圖示作為資源,而且應該使用 LoadIconLoadImage,而不是在運行時間建立圖示。 使用圖示資源可避免裝置依賴、簡化當地語系化,並讓應用程式共享圖示圖形。

CreateIconFromResourceEx 函式可讓應用程式瀏覽系統的資源,並根據資源數據建立圖示和數據指標。 CreateIconFromResourceEx 根據其他可執行檔或 DLL 的二進位資源數據建立圖示。 應用程式必須在此函式前面呼叫 LookupIconIdFromDirectoryEx 函式和數個資源函式。 LookupIconIdFromDirectoryEx 會傳回目前顯示裝置最適當圖示數據的識別碼。

圖示顯示

您可以使用 GetIconInfo 函式來擷取圖示的影像,並使用 drawIconEx 函式來繪製它。 若要繪製圖標的預設影像,請在呼叫 DrawIconEx中指定 DI_COMPAT 旗標。 如果您未指定 DI_COMPAT 旗標,DrawIconEx 使用使用者指定的影像繪製圖示。

當系統顯示圖示時,它必須從 .exe 或 .dll 檔案擷取適當的圖示影像。 系統會使用下列步驟來選取圖示影像:

  1. 選取 RT_GROUP_ICON 資源。 如果有多個這類資源存在,系統會使用資源 scrip 中列出的第一個資源。
  2. RT_GROUP_ICON 資源選取適當的 RT_ICON 映像。 如果有多個映像存在,系統會使用下列準則來選擇映像:
    • 選擇大小最接近所要求大小的影像。
    • 如果有兩個或多個該大小的影像,則會選擇符合顯示器色彩深度的影像。
    • 如果沒有影像完全符合顯示器的色彩深度,則會選擇色彩深度不超過顯示器色彩深度的影像。 如果全部超過允許的色彩深度,則會選擇最低的色彩深度。

注意

系統會將 8 或以上 bpp 的所有色彩深度視為相等。 因此,在相同資源中包含 16x16 256 色彩影像和 16x16 16 色彩影像沒有好處,系統只會選擇它遇到的第一個影像。 當顯示器處於 8-bpp 模式時,系統會在 256 色彩圖示上選擇 16 色圖示,並使用系統預設調色盤顯示所有圖示。

 

若要顯示動畫圖示,請使用靜態控件,如下列代碼段所示。

hIcon = LoadImage(NULL, "ico.ani", IMAGE_ICON, 0, 0, LR_LOADFROMFILE);
SendMessage( hStatic, STM_SETIMAGE, IMAGE_ICON, (LPARAM)(UINT)hIcon);

圖示毀壞

當應用程式不再需要使用 CreateIconIndirect 函式所建立的圖示時,它應該會終結圖示。 DestroyIcon 函式會終結圖示控點,並釋放圖示所使用的任何記憶體。 應用程式應該只針對使用 CreateIconIndirect 建立的圖示使用這個函式;不需要銷毀其他圖示。

圖示重複

CopyIcon 函式會複製圖示控點。 這可讓應用程式或 DLL 取得另一個模組所擁有之圖示的自己的控制代碼。 然後,如果釋放另一個模組,複製圖示的應用程式仍然可以使用圖示。

CopyImage 函式會根據指定的來源圖示建立新的圖示。 新圖示可以大於或小於來源圖示。

如需在可執行檔 (.exe) 檔案中新增、移除或取代圖示資源的相關信息,請參閱 Resources

DuplicateIcon 函式會製作圖示的實際複本。