次の方法で共有


既定のパレット

既定のパレット は、既定でデバイス コンテキストで使用できる色を識別する色値の配列です。 システムは、アプリケーションがカラー パレットをサポートするデバイスのコンテキストを作成するたびに、既定のパレットをコンテキストに関連付けます。 既定のパレットを使用すると、それ以上の操作を行わずに、アプリケーションで色を使用できるようになります。

通常、既定のパレットには 20 個のエントリ (色) がありますが、エントリの正確な数はデバイスによって異なる場合があります。 この数値は、GetDeviceCaps 関数によって返される NUMCOLORS 値と同じです。 アプリケーションでは、非パレット デバイスで使用できる色を検出するために使用されるのと同じ手法である、ソリッド ペンを列挙することで、既定のパレットの色の色の値を取得できます。 既定のパレットの色は、デバイスによって異なります。 たとえば、ディスプレイ デバイスでは、多くの場合、VGA ディスプレイの 16 色の標準色と、Windows で定義されている他の 4 色が使用されます。 印刷デバイスでは、他の既定の色が使用される場合があります。

既定のパレットを使用する場合、アプリケーションは色の値を使用してペンとテキストの色を指定します。 要求された色がパレットにない場合、システムはパレット内の最も近い色を使用して色を近似します。 アプリケーションがパレットにない単色のブラシを要求した場合、システムはパレット内にある色でディザリングすることで色をシミュレートします。

近似とディザリングを回避するために、アプリケーションでは、カラー値ではなくカラー パレット インデックスを使用して、ペン、ブラシ、テキストの色を指定することもできます。 カラー パレット インデックスは、特定のパレット エントリを識別する整数値です。 アプリケーションでは、カラー値の代わりにカラー パレット インデックスを使用できますが、インデックスを作成するには、PALETTEINDEX マクロを使用する必要があります。

カラー パレット インデックスは、カラー パレットをサポートするデバイスでのみ役立ちます。 このデバイスへの依存を回避するには、同じコードを使用してパレットデバイスと非パレットデバイスの両方に描画するアプリケーションでは、パレット相対色値を使用してペン、ブラシ、テキストの色を指定する必要があります。 これらの値は、ソリッド ブラシを作成する場合を除き、色の値と同じです。 (パレット デバイスでは、パレットの相対色の値で指定された単色のブラシの色は、ディザリングの代わりにカラー近似の対象になります)。アプリケーションでは、パレット相対カラー値を作成するには、PALETTERGB マクロを使用する必要があります。

システムは、アプリケーションがデフォルト・パレット内の項目を変更することを許可しません。 既定のパレット以外の色を使用するには、アプリケーションで独自の論理パレットを作成し、デバイス コンテキストでパレットを選択する必要があります。