创建调色板
procedure TForm1.Button1Click(Sender: TObject);
var
lpPalette : PLogPalette;
hPal : hPalette;
i : integer;
begin
{Allocate the memory used by the palette}
GetMem(lpPalette,
sizeof(TLogPalette) + (255 * sizeof(TPaletteEntry)));
{Fill out the palette header}
lpPalette^.palVersion := $300;
lpPalette^.palNumEntries := 256;
{Turn range checking off if it is on and}
{remember the range checking state}
{$IFOPT R+}
{$DEFINE CKRANGE}
{$R-}
{$ENDIF}
{Fill in the palette structure color table with shades of gray}
for i := 0 to 255 do begin
lpPalette^.PalPalEntry[i].peRed := i;
lpPalette^.PalPalEntry[i].peGreen := i;
lpPalette^.PalPalEntry[i].peBlue := i;
end;
{Turn range checking back on if it was on when we started}
{$IFDEF CKRANGE}
{$UNDEF CKRANGE}
{$R+}
{$ENDIF}
{Create a palette handle}
hPal := CreatePalette(lpPalette^);
{Free the memory use by the palette structure}
FreeMem(lpPalette,
sizeof(TLogPalette) + (255 * sizeof(TPaletteEntry)));
{Do something with the palette here}
{Delete the palette handle after use}
DeleteObject(hPal);
end;