Platform SDK: DirectX |
次の例で、非排他 (ウィンドウ) モードで DirectDraw パレットをどのように作成するかを示す。パレットを正しく作用させるために、IDirectDraw7::CreatePalette メソッドに渡した PALETTEENTRY 構造体の 256 エントリのそれぞれをセット アップすることがきわめて重要となる。
LPDIRECTDRAW7 lpDD; // 初期化されていると仮定する。 PALETTEENTRY pPaletteEntry[256]; int index; HRESULT ddrval; LPDIRECTDRAWPALETTE2 lpDDPal; // Windows スタティック エントリを設定する。 for (index = 0; index < 10 ; index++) { // 最初の 10 スタティック エントリ pPaletteEntry[index].peFlags = PC_EXPLICIT; pPaletteEntry[index].peRed = index; pPaletteEntry[index].peGreen = 0; pPaletteEntry[index].peBlue = 0; // 最後の 10 スタティック エントリ pPaletteEntry[index+246].peFlags = PC_EXPLICIT; pPaletteEntry[index+246].peRed = index+246; pPaletteEntry[index+246].peGreen = 0; pPaletteEntry[index+246].peBlue = 0; } // ここで、プライベート エントリをセット アップする。この例では、 // 利用可能な最初の 16 エントリがアニメーションされる。 for (index = 10; index < 26; index ++) { pPaletteEntry[index].peFlags = PC_NOCOLLAPSE|PC_RESERVED; pPaletteEntry[index].peRed = 255; pPaletteEntry[index].peGreen = 64; pPaletteEntry[index].peBlue = 32; } // ここで残りのエントリ (アニメーションしないエントリ) をセット アップする。 for (; index < 246; index ++) // 前のループでインデックスが設定される。 { pPaletteEntry[index].peFlags = PC_NOCOLLAPSE; pPaletteEntry[index].peRed = 25; pPaletteEntry[index].peGreen = 6; pPaletteEntry[index].peBlue = 63; } // すべての 256 エントリを埋め込む。パレットを作成する。 ddrval = lpDD->CreatePalette(DDPCAPS_8BIT, pPaletteEntry, &lpDDPal,NULL);
次の例で、非排他 (ウィンドウ) モードで DirectDraw パレットをどのように作成するかを示す。パレットを正しく作用させるために、DirectDraw7.CreatePalette メソッドに渡した PALETTEENTRY 型の 256 のエントリのそれぞれをセット アップすることがきわめて重要となる。
Dim pPaletteEntry(255) As PALETTEENTRY Dim index As Long Dim ddpal As DirectDrawPalette ' Windows スタティック エントリを設定する。 For index = 0 To 9 ' 最初の 10 スタティック エントリ pPaletteEntry(index).flags = PC_EXPLICIT pPaletteEntry(index).red = index pPaletteEntry(index).green = 0 pPaletteEntry(index).blue = 0 ' 最後の 10 スタティック エントリ pPaletteEntry(index + 246).flags = PC_EXPLICIT pPaletteEntry(index + 246).red = index + 246 pPaletteEntry(index + 246).green = 0 pPaletteEntry(index + 246).blue = 0 Next ' ここで、プライベート エントリをセット アップする。この例では、 ' 利用可能な最初の 16 エントリがアニメーションされる。 For index = 10 To 25 pPaletteEntry(index).flags = PC_NOCOLLAPSE Or PC_RESERVED pPaletteEntry(index).red = 255 pPaletteEntry(index).green = 64 pPaletteEntry(index).blue = 32 Next ' ここで残りのエントリ (アニメーションしないエントリ) を ' セット アップする。 For index = 26 To 246 pPaletteEntry(index).flags = PC_NOCOLLAPSE pPaletteEntry(index).red = 25 pPaletteEntry(index).green = 6 pPaletteEntry(index).blue = 63 Next ' すべての 256 エントリを埋め込む。パレットを作成する。 Set ddpal = dd.CreatePalette(DDPCAPS_8BIT, pPaletteEntry())