共用方式為


setICMMode 函式 (wingdi.h)

SetICMMode 函式會導致在指定的裝置內容上啟用、停用或查詢影像色彩管理, (DC) 。

語法

int SetICMMode(
  HDC hdc,
  int mode
);

參數

hdc

識別裝置內容的句柄。

mode

開啟和關閉影像色彩管理。 此參數可以採用下列其中一個常數值。

 

意義
ICM_ON
開啟色彩管理。 關閉半色調的舊樣式色彩更正。
ICM_OFF
關閉色彩管理。 開啟半色調的舊樣式色彩更正。
ICM_QUERY
查詢色彩管理的目前狀態。
ICM_DONE_OUTSIDEDC
關閉 DC 內的色彩管理。 在 Windows 2000 底下,也會關閉半色調的舊式色彩更正。 Windows 95 下不支援。

傳回值

如果此函式成功,則傳回值為非零值。

如果此函式失敗,則傳回值為零。

如果指定ICM_QUERY且函式成功,則傳回的非零值會ICM_ON或ICM_OFF表示目前模式。

備註

如果系統找不到符合裝置狀態的 ICC 色彩設定檔, SetICMMode 會失敗並傳回零。

一旦為裝置內容啟用 WCS (DC) ,使用大部分 Win32 API 函式傳入 DC 的色彩就會符合色彩。 主要例外狀況為 BitBltStretchBlt。 假設在執行位區塊傳輸 (blit) 從一個 DC 到另一個 DC 時,這兩個 DC 已經相容,而且不需要色彩更正。 如果這不是這種情況,可能會執行色彩校正。 具體而言,如果裝置獨立位圖 (DIB) 用來作為 blit 的來源,且 blit 會執行到已啟用 WCS 的 DC 中,則會執行色彩比對。 如果這不是您想要的專案,請在呼叫 BitBltStretchBlt 之前先呼叫 SetICMMode 來關閉目的地 DC 的 WCS。

如果使用 CreateCompatibleDC 函式在 DC 中建立位圖,則點陣圖的色彩可能會比對兩次,一次建立,一次執行 blit。 原因是 CreateCompatibleDC 函式所建立之 DC 中的點陣圖會取得來源 DC 目前的筆刷、畫筆和調色盤。 不過,根據預設,新的 DC 將會停用 WCS。 如果稍後使用 SetICMMode 函式為新的 DC 啟用 WCS,將會完成色彩校正。 若要避免透過使用 CreateCompatibleDC 函式進行雙色彩更正,請在呼叫 CreateCompatibleDC 函式之前,使用 SetICMMode 函式關閉來源 DC 的 WCS。

從印表機的DC建立相容的DC (請參閱 CreateCompatibleDC ) 時,如果印表機的 DC 已啟用,則預設會一律執行色彩比對。 使用 SetDIBitsToDeviceStretchDIBits 將 blit 執行到印表機 DC 時,會使用印表機的預設色彩配置檔。 如果這不是您想要的專案,請在呼叫 SetDIBitsToDeviceStretchDIBits 之前,先呼叫 SetICMMode 來關閉印表機 DC 的 WCS。

此外,當列印至已開啟 WCS 的印表機 DC 時,必須在每次呼叫 StartPage 函式之後呼叫 SetICMMode 函式,才能重新開啟 WCS。 StartPage 函式會呼叫 RestoreDCSaveDC 函式,這會導致印表機 DC 的 WCS 關閉。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 wingdi.h
程式庫 Gdi32.lib
Dll Gdi32.dll

另請參閱