色の近似とディザリング
アプリケーションでは、デバイスの色機能に関係なく色を使用できますが、結果の出力は、色が慎重に選択される出力ほど有益で満足できない場合があります。 可能なすべての色値に対して完全に一致することが保証されるデバイスはほとんどありません。そのため、アプリケーションがデバイスで生成できない色を要求した場合、システムは、デバイスが生成できる色を使用してその色を近似します。 たとえば、アプリケーションが白黒プリンター用の赤いペンを作成しようとすると、システムが赤の近似として黒を使用する代わりに黒のペンを受け取ります。
アプリケーションは、 GetNearestColor 関数を使用して、システムが特定の色を近似するかどうかを検出できます。 この関数は、色の値を受け取り、デバイスが生成できる最も近い一致する色の色値を返します。 システムがこの近似を決定するために使用する方法は、デバイス ドライバーとその色の機能によって異なります。 ほとんどの場合、近似色の全体的な強度は、要求された色の強度に最も近い値になります。
アプリケーションがペンを作成するか、テキストの色を設定すると、完全に一致するものが存在しない場合、システムは常に色を近似します。 アプリケーションがソリッド ブラシを作成すると、ディザリングによって要求された色のシミュレートが試行される場合があります。 ディザリングでは 、パターン内の 2 つ以上の色を交互に使用して、色をシミュレートします。 たとえば、赤と白の異なる組み合わせを交互に行うことで、ピンクの異なる色合いをシミュレートできます。 色とパターンによっては、ディザリングによって適切なシミュレーションが生成される場合があります。 モノクロデバイスでは、シンプルな白黒を超えて使用可能な「色」の数を拡大するため、最も便利です。
ディザリングされた色の作成に使用されるメソッドは、デバイス ドライバーによって異なります。 ほとんどのデバイス ドライバーは、要求された赤、緑、青の色の強度値に基づいてパターンを生成する標準的なディザリング アルゴリズムを使用します。 一般に、デバイスで生成できない要求された色はシミュレーションの対象になりますが、システムが色をシミュレートしてもアプリケーションには通知されません。 さらに、アプリケーションでは、デバイス ドライバーのディザリング アルゴリズムを変更または変更できません。 ただし、アプリケーションでは、パターン ブラシを作成して使用することで、アルゴリズムをバイパスできます。 このようにして、アプリケーションは、ブラシの作成に使用するビットマップ内の単色を組み合わせることによって、独自のディザリングされた色を作成します。