SetICMMode 関数 (wingdi.h)
SetICMMode 関数を使用すると、特定のデバイス コンテキスト (DC) でイメージの色管理を有効、無効、または照会できます。
構文
int SetICMMode(
HDC hdc,
int mode
);
パラメーター
hdc
デバイス コンテキストへのハンドルを識別します。
mode
イメージの色管理をオンまたはオフにします。 このパラメーターは、次のいずれかの定数値を受け取ることができます。
戻り値
この関数が成功した場合、戻り値は 0 以外の値になります。
この関数が失敗した場合、戻り値は 0 になります。
ICM_QUERYが指定され、関数が成功した場合、返される 0 以外の値はICM_ONされるか、現在のモードを示すためにICM_OFFされます。
注釈
デバイスの状態と一致する ICC カラー プロファイルがシステムで見つからない場合、 SetICMMode は失敗し、0 を返します。
デバイス コンテキスト (DC) に対して WCS が有効になると、ほとんどの Win32 API 関数を使用して DC に渡される色が色と一致します。 主な例外は 、BitBlt と StretchBlt です。 ある DC から別の DC へのビット ブロック転送 (blit) を実行する場合、2 つの DC は既に互換性があり、色補正は必要ありません。 そうでない場合は、色補正を行ってもよい。 具体的には、デバイスに依存しないビットマップ (DIB) が blit のソースとして使用され、blit が WCS が有効になっている DC に対して実行される場合、カラー マッチングが実行されます。 これが必要でない場合は、BitBlt または StretchBlt を呼び出す前に SetICMMode を呼び出して、宛先 DC の WCS をオフにします。
CreateCompatibleDC 関数を使用して DC にビットマップを作成する場合、ビットマップの色を 2 回、作成時に 1 回、blit を実行したときに 1 回一致させることができます。 その理由は、 CreateCompatibleDC 関数によって作成された DC 内のビットマップが、ソース DC の現在のブラシ、ペン、パレットを取得するためです。 ただし、新しい DC では WCS は既定で無効になります。 後で SetICMMode 関数を使用して新しい DC に対して WCS を有効にすると、色の修正が行われます。 CreateCompatibleDC 関数を使用して二重色の修正を防ぐには、CreateCompatibleDC 関数が呼び出される前に、SetICMMode 関数を使用してソース DC の WCS をオフにします。
互換性のある DC がプリンターの DC から作成された場合 ( 「CreateCompatibleDC 」を参照)、プリンターの DC に対して有効になっている場合、既定では常にカラー マッチングが実行されます。 プリンターの既定のカラー プロファイルは、 SetDIBitsToDevice または StretchDIBits を使用してプリンターの DC に blit が実行されるときに使用 されます。 これが必要でない場合は、SetDIBitsToDevice または StretchDIBits を呼び出す前に SetICMMode を呼び出して、プリンターの DC の WCS をオフにします。
また、WCS がオンになっているプリンターの DC に印刷する場合は、StartPage 関数を呼び出すたびに SetICMMode 関数を呼び出して WCS をオンに戻す必要があります。 StartPage 関数は RestoreDC 関数と SaveDC 関数を呼び出し、その結果、プリンターの DC で WCS がオフになります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | wingdi.h |
Library | Gdi32.lib |
[DLL] | Gdi32.dll |