首页  编辑  

创建调色板

Tags: /超级猛料/Picture.图形图像编程/颜色处理/   Date Created:

创建调色板

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;