Gestionarea culorilor fără pascal

paleta de culori. Programul are capacitatea de a interoga sau de a modifica simultan conținutul oricărui registru al paletei sau al conținutului tuturor registrelor.

SetBkColor (n_reg); // n_reg din intervalul [0, 255]







desen color care reproduce segmente de linie și contururi GUVERNAMENTALE diferite forme grafice (primitivele -. arce, cercuri, elipse, poligoane porecle etc.) se stabilește prin procedura de setcolor. Singurul său argument este numărul de registru DAC, în care culoarea fizică a primului plan este fixă:

SetColor (n_reg); // n_reg din intervalul [0, 255]

Culoarea și metoda de umplere sunt setate utilizând procedura SetFillStyle: SetFillStyle (Pattern, n_reg); // n_reg din intervalul [0, 255]

Parametrul model (tipar) specifică o metodă de umplere o figură închisă (umplere cu culoare solidă, toate tipurile de umbrire, umbrire și raster t. N.). Cu toate căile susținute de biblioteca BGI, ne vom cunoaște mai târziu.

Pentru a vă familiariza cu paleta implicită, care este instalată când sistemul de grafică este inițializat, puteți folosi programul din Lista 15.1.

Listarea 15.1. Programul Color256

program color256; utilizează grafic;

gd, GM: SmallInt; x, y, i, j: SmallInt;

gd: = D8bit; gm: = m800x600; initgraph (gd, gm, "); pentru i: = 0 până la 15 nu

pentru j: = 0 până la 15 începe

y: = j * 20; SetfillStyle (SolidFill, i * 16 + j); Bară (x, y, x + 40, y + 20);

Acest program reproduce succesiv dreptunghiuri în dimensiune

40 20 de pixeli, colorați-i în culori, corespunzând conținutului următorului registru al DAC. Rezultatul muncii sale este prezentat în Fig. 15.2. Numerotarea culorilor avansează de la 0 la 255. Fiecare coloană conține culorile celor 16 registre DAC consecutive.

Gestionarea culorilor fără pascal






Fig. 15.2. Paleta de culori în mod prestabilit

Numărul registrului DAC este zero, zero, cod care corespunde intensitățile minime triple RGB-componente - (0, 0, 0). Pe ecran, acest set corespunde culorii negre. În registrul cu numărul 1 există un triple (0, 0, 63) care corespunde intensității maxime a culorii albastre. Numărul de înregistrare 2 conține un număr triplu (0, 63, 0), iar conținutul său este afișat în verde. În registrul următor, valorile maxime de albastru și verde sunt amestecate (0, 63, 63), corespunzătoare culorii turcoazului. Conținutul unui al patrulea registru este egal cu (63, 0, 0) este prezentată în roșu, și altele asemenea. D. Pentru valori de notație ale primelor 16 de culori pot fi utilizate denumirile constantele mnemonice prezentate în tabelul. 15.4.

Selectarea altor culori din paletă, în mod implicit, se face de obicei experimental sau folosind schema de culori prezentată în Fig. 15.2.

Funcțiile GetColor și GetBkColor nu necesită argumente. Acestea returnează valori de tip Word, corespunzătoare numerelor registrelor DAC atribuite culorilor desenului și fundalului în acel moment:

Pentru a instala sau sondaj conținutul registrelor paletei, trebuie să folosiți structuri speciale - înregistrări precum RGBRec și PaletteType:

RGBRec = înregistrare în ambalaj roșu. smallint; Green. smallint; Albastru. smallint;

PaletteType = Record size. LongInt;

Culori. array [0..MaxColors] de RGBRec; se încheie;

O intrare de tip RGBRec este un câmp de octet dublu pentru stocarea conținutului unui singur registru DAC. O intrare PaletteType vă permite să stocați conținutul tuturor registrelor de palete. Primul său câmp stochează dimensiunea paletei în octeți. Alături de acesta este o matrice, în care sunt localizate conținutul tuturor registrelor paletei. Pentru modul D8bit, MaxColors (culoarea disponibilă maximă) este 255.

DACreg: RGBRec; DACall: PaletteType; max_reg: SmallInt;

max_reg: = GetPaletteSize; // max. numărul de înregistrare al paletei GetPalette (DACall); // sondaj toate registrele paletei actuale GetDefdaultPalette (DACall); // sondaj paleta implicită SetAllPalette (DACAll); // setați toate registrele paletei SetPalette (n_reg, DACreg); // modificați registrul cu numărul n_reg SetRGBPalette (n_reg, vR, vG, vB); // modificați registrul cu numărul n_reg

În procedura SetRGBPalette, valorile componentelor RGB trebuie să aparțină intervalului [0, 63].

În general vorbind, foarte înțelept de schimbare nu este în valoare paleta - 256 de culori paleta standard este suficient pentru a nu foarte complicat BGI-grafică.







Trimiteți-le prietenilor: