Definiri de culori si palete
Informatiile referitoare la culori sunt cotinute intr-un tabel, numit paletaSstructura paletei este descrisa te tipul predefinit PaletteType astfel:
Const
MaxColors=15;
Type PaletteType=record
Size:byte;
Colors:array[0..MaxColors] of shortint;
End;
Campul calificat cu size continenumarul culori paletei, iar campurile calificate de colors contin codurile corespunzatoare diferitelor culori existente. Paleta implicita este initializata de procedura InitGraph; numarul elementelor paletei este in funtie de placa grafica utilizata.
10.1. Proceduri si functii
GetDefaultPalette
Procedura GetDefaultPalette incarca intr-o variabila (de tip predefinit PaletteType) paleta implicita; acesta paleta implicita a fost initializata de procedura InitGraph. Procedura este definita astfel :
Procedure GetDefaultPalette(var pal:PaletteType);
Pal desemneaza variabila in care este incarcata paleta implicita. Campul pal.size contine numarul culorilor ce pot fi utilizate. Campul pal.colors(I) contine codul crespunzator culori I.
SetColor
Procedura SetColor permite stabilirea culori scrisullui. Procedura este definita astfel:
Procedure SetColor(colnum:word);
Colnum este indexul din paleta al culori selectate.
GetBkColor
Functia GetBkColor returneaza valoarea utilizata la ultimul apel al proceduri SetColor. Functia este definita astfel:
Function GetBkColor:word;
GetColor
Functia GetColor returneaza valoarea utilizata la ultimul apel al procedurii SetColor. Functia este definita astfel:
Function GetColor:word;
10.2. Aplicatie
Programul palete realizeaza lucrul cu palete de culori setarile paletelor si schimbarea culorilor unui text si a fundalului.
Program palete;
Usese Crt,Graph;
Var gd,gm,i:integer;
Color:word;
MyPal,OldPal,Palette:PaletteType;
Begin
Randomize;
Gd:=Detect;
InitGraph(gd,gm,`c:bpbgi`
If GraphResult<0 then
Halt(1);
GetDefaultPalette(OldPal);
MyPal:=OldPal;
for i:=0 to MyPal.Size-1 do
begin
SetColor(i);
OutTextXY(10,i*10`******Se schimba culorile******`);
OutTextXY(400,i*10`***Turbo Pascal***`);
End;
Repeat
With MyPal do
Colors[Random(Size)]:=Random(Size+1);
SetAllPalette(MyPal);
Until KeyPressed;
SetAllPalette (OldPal);
ClearDevice;
OutTextXY(10,10,`apsa<Enter>.`):