CPalette クラス

Windows のカラー パレットをカプセル化します。

構文

class CPalette : public CGdiObject

メンバー

パブリック コンストラクター

名前 説明
CPalette::CPalette Windows パレットがアタッチされていない CPalette オブジェクトを構築します。 CPalette オブジェクトを使用するには、その前に初期化メンバー関数のいずれかを使用して初期化する必要があります。

パブリック メソッド

名前 説明
CPalette::AnimatePalette CPalette オブジェクトによって識別される論理パレット内のエントリを置き換えます。 Windows は新しいエントリをシステム パレットにすぐにマップするため、アプリケーションはクライアント領域を更新する必要はありません。
CPalette::CreateHalftonePalette デバイス コンテキストのハーフトーン パレットを作成し、 CPalette オブジェクトにアタッチします。
CPalette::CreatePalette Windows カラー パレットを作成し、 CPalette オブジェクトにアタッチします。
CPalette::FromHandle Windows パレット オブジェクトへのハンドルが指定されている場合は、 CPalette オブジェクトへのポインターを返します。
CPalette::GetEntryCount 論理パレット内のパレット エントリの数を取得します。
CPalette::GetNearestPaletteIndex 色の値に最も近い論理パレット内のエントリのインデックスを返します。
CPalette::GetPaletteEntries 論理パレット内のパレット エントリの範囲を取得します。
CPalette::ResizePalette CPalette オブジェクトで指定された論理パレットのサイズを、指定した数のエントリに変更します。
CPalette::SetPaletteEntries 論理パレット内のエントリの範囲に RGB カラー値とフラグを設定します。

パブリック演算子

名前 説明
CPalette::operator HPALETTE CPaletteにアタッチされている HPALETTE を返します。

解説

パレットは、アプリケーションとカラー出力デバイス (ディスプレイ デバイスなど) の間のインターフェイスを提供します。 このインターフェイスにより、アプリケーションは、他のアプリケーションによって表示される色に深刻な干渉を与えることなく、出力デバイスの色機能を最大限に活用できます。 Windows では、アプリケーションの論理パレット (必要な色の一覧) とシステム パレット (使用可能な色を定義) を使用して、使用される色を決定します。

CPalette オブジェクトは、オブジェクトによって参照されるパレットを操作するためのメンバー関数を提供します。 CPalette オブジェクトを構築し、そのメンバー関数を使用して、実際のパレット、グラフィックス デバイス インターフェイス (GDI) オブジェクトを作成し、そのエントリやその他のプロパティを操作します。

CPaletteの使用方法の詳細については、「Graphic オブジェクト」を参照してください。

継承階層

CObject

CGdiObject

CPalette

要件

ヘッダー: afxwin.h

CPalette::AnimatePalette

CPalette オブジェクトにアタッチされている論理パレットのエントリを置き換えます。

void AnimatePalette(
    UINT nStartIndex,
    UINT nNumEntries,
    LPPALETTEENTRY lpPaletteColors);

パラメーター

nStartIndex
アニメーション化するパレットの最初のエントリを指定します。

nNumEntries
アニメーション化するパレット内のエントリの数を指定します。

lpPaletteColors
PALETTEENTRY 構造体の配列の最初のメンバーをポイントして、nStartIndex および nNumEntries で識別されるパレット エントリを置き換えます。

解説

アプリケーションが AnimatePaletteを呼び出すとき、Windows は新しいエントリをシステム パレットにすぐにマップするため、クライアント領域を更新する必要はありません。

AnimatePalette関数は、CPalette オブジェクトにアタッチされている LOGPALETTE 構造体の対応するpalPaletteEntry メンバーにPC_RESERVED フラグが設定されたエントリのみを変更します。 この構造の詳細については、Windows SDK の LOGPALETTE を参照してください。

CPalette::CPalette

CPalette オブジェクトを構築します。

CPalette();

解説

オブジェクトには、アタッチする CreatePalette を呼び出すまで、パレットがアタッチされていません。

CPalette::CreateHalftonePalette

デバイス コンテキストのハーフトーン パレットを作成します。

BOOL CreateHalftonePalette(CDC* pDC);

パラメーター

pDC
デバイス コンテキストを識別します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

デバイス コンテキストのストレッチ モードが HALFTONE に設定されている場合、アプリケーションはハーフトーン パレットを作成する必要があります。 その後、 CreateHalftonePalette メンバー関数によって返される論理ハーフトーン パレットを選択し、 CDC::StretchBlt または StretchDIBits 関数が呼び出される前に、デバイス コンテキストに実現する必要があります。

CreateHalftonePaletteStretchDIBitsの詳細については、Windows SDK を参照してください。

CPalette::CreatePalette

Windows 論理カラー パレットを作成し、CPalette オブジェクトにアタッチして、CPalette オブジェクトを初期化します。

BOOL CreatePalette(LPLOGPALETTE lpLogPalette);

パラメーター

lpLogPalette
論理パレットの色に関する情報を含む LOGPALETTE 構造体を指します。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

LOGPALETTE構造の詳細については、Windows SDK を参照してください。

CPalette::FromHandle

Windows パレット オブジェクトへのハンドルが指定されている場合は、 CPalette オブジェクトへのポインターを返します。

static CPalette* PASCAL FromHandle(HPALETTE hPalette);

パラメーター

hPalette
Windows GDI カラー パレットへのハンドル。

戻り値

成功した場合は CPalette オブジェクトへのポインター。それ以外の場合は NULL。

解説

CPalette オブジェクトがまだ Windows パレットにアタッチされていない場合は、一時的なCPalette オブジェクトが作成されてアタッチされます。 この一時 CPalette オブジェクトは、アプリケーションがイベント ループで次にアイドル時間を過ぎ、その時点ですべての一時グラフィック オブジェクトが削除されるまでのみ有効です。 つまり、一時オブジェクトは、1 つのウィンドウ メッセージの処理中にのみ有効です。

CPalette::GetEntryCount

このメンバー関数を呼び出して、特定の論理パレット内のエントリの数を取得します。

int GetEntryCount();

戻り値

論理パレット内のエントリの数。

CPalette::GetNearestPaletteIndex

指定した色の値に最も近い論理パレット内のエントリのインデックスを返します。

UINT GetNearestPaletteIndex(COLORREF crColor) const;

パラメーター

crColor
照合する色を指定します。

戻り値

論理パレット内のエントリのインデックス。 エントリには、指定した色とほぼ一致する色が含まれています。

CPalette::GetPaletteEntries

論理パレット内のパレット エントリの範囲を取得します。

UINT GetPaletteEntries(
    UINT nStartIndex,
    UINT nNumEntries,
    LPPALETTEENTRY lpPaletteColors) const;

パラメーター

nStartIndex
取得する論理パレットの最初のエントリを指定します。

nNumEntries
取得する論理パレット内のエントリの数を指定します。

lpPaletteColors
パレット エントリを受け取るデータ構造 PALETTEENTRY の配列をポイントします。 配列には、 nNumEntries で指定された数以上のデータ構造が含まれている必要があります。

戻り値

論理パレットから取得されたエントリの数。関数が失敗した場合は 0。

CPalette::operator HPALETTE

CPalette オブジェクトのアタッチされた Windows GDI ハンドルを取得するには、この演算子を使用します。

operator HPALETTE() const;

戻り値

成功した場合は、 CPalette オブジェクトによって表される Windows GDI オブジェクトへのハンドル。それ以外の場合は NULL。

解説

この演算子は、HPALETTE オブジェクトの直接使用をサポートするキャスト演算子です。

グラフィック オブジェクトの使用の詳細については、Windows SDK の Graphic Objects に関する記事を参照してください。

CPalette::ResizePalette

CPalette オブジェクトにアタッチされている論理パレットのサイズを、nNumEntries で指定されたエントリの数に変更します。

BOOL ResizePalette(UINT nNumEntries);

パラメーター

nNumEntries
サイズを変更した後のパレット内のエントリの数を指定します。

戻り値

パレットのサイズが正常に変更された場合は 0 以外。それ以外の場合は 0。

解説

アプリケーションが ResizePalette を呼び出してパレットのサイズを小さくした場合、サイズ変更されたパレットに残っているエントリは変更されません。 アプリケーションが ResizePalette 呼び出してパレットを拡大すると、追加のパレット エントリは黒に設定され (赤、緑、青の値はすべて 0)、追加エントリのフラグはすべて 0 に設定されます。

Windows API ResizePaletteの詳細については、Windows SDK の「 ResizePalette 」を参照してください。

CPalette::SetPaletteEntries

論理パレット内のエントリの範囲に RGB カラー値とフラグを設定します。

UINT SetPaletteEntries(
    UINT nStartIndex,
    UINT nNumEntries,
    LPPALETTEENTRY lpPaletteColors);

パラメーター

nStartIndex
設定する論理パレットの最初のエントリを指定します。

nNumEntries
設定する論理パレット内のエントリの数を指定します。

lpPaletteColors
パレット エントリを受け取るデータ構造 PALETTEENTRY の配列をポイントします。 配列には、 nNumEntries で指定された数以上のデータ構造が含まれている必要があります。

戻り値

論理パレットで設定されたエントリの数。関数が失敗した場合は 0。

解説

アプリケーションが SetPaletteEntriesを呼び出すときに論理パレットがデバイス コンテキストに選択されている場合、アプリケーションが CDC::RealizePalette を呼び出すまで変更は有効になりません。

詳細については、Windows SDK の「 PALETTEENTRY 」を参照してください。

関連項目

MFC サンプル DIBLOOK
CGdiObject クラス
階層図
CPalette::GetPaletteEntries
CPalette::SetPaletteEntries