Definiri de culori si palete, Proceduri si functii, Aplicatie



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>.`):