68890

Управління палітрою

Лекция

Информатика, кибернетика и программирование

Стандартний драйвер egavga.bgi використовує RGBI - систему роботи з кольором (Red,green,blue,intensity). На базі трьох кольорів шляхом їх змішування і установки низької або високої яскравості свічення формується апаратно зумовлена палітра.

Украинкский

2014-09-26

65.5 KB

1 чел.

ЛЕКЦІЯ 1

Управління палітрою

Стандартний драйвер  egavga.bgi використовує  RGBI - систему роботи з кольором (Red,green,blue,intensity).

На базі трьох кольорів шляхом їх змішування і установки низької або високої яскравості свічення формується апаратно зумовлена палітра.

Розглянемо принцип формування 16 кольорів - 23.

Константа

Значення

    Код

Колір на                           екрані

Компоненти    кольору

Black

0

0000

чорний

. . . .

Blue

1

0001

синій

. . . B

Green

2

0010

зелений

. . G .

Cyan

3

0011

блакитний

. . GB

Red

4

0100

червоний

. R . .

Magenta

5

0101

фіолетовий

. R . B

Brawn

6

0110

коричневий

. RG .

Light-Gray

7

0111

світло-сірий

. RGB

Dark-Gray

8

1000

темно-сірий

I . . .

Light-Blue

9

1001

яскраво-синій

I . . B

Light-Green

10

1010

яскраво-зелений

I .G .

Light-Cyan

11

1011

яскраво-блакитний

I .GB

Light-Red

12

1100

малиновий

IR . .

Light-Magenta

13

1101

яскраво-фіолетовий

IR . B

Yellow

14

1110

жовтий

IRG .

White

15

1111

білий

IRGB

При розширенні можливості роботи з кольором, наприклад  для 64 кольорової палітри,   в байті використовується 6 бітів, а не 4 як в 16 кольоровій палітрі).          

Принцип формування палітри приблизно той же, але в основу береться RrGgBb-система.

        R,g,b-нормальна яскравість;

       r,g,b- яскравість в два рази менше.

Структура байта, що представляє 1 апаратний колір.

Біт

Компонент кольору

0

B

Синій, інтенсивність 2/3

1

G

Зелений, інтенсивність 2/3

2

R

Червоний, інтенсивність 2/3

3

B

Синій, інтенсивність 1/3

4

G

Зелений, інтенсивність 1/3

5

r

Червоний, інтенсивність 1/3

6

Не використовується

7

Не використовується

Для кожного чистого кольору R,G і B існує 3 градації яскравості 1/3,2/3 і 1/3+2/3=1.

      Так само можливі комбінації бітів.

Можлива кількість кольорів –26–64

Константа

Значення

    Код

Колір на                           екрані

Компоненти    кольору

Black

0

000000

чорний

. . . . . .

Blue

1

000001

синій

. . . . . B

Green

2

000010

зелений

. . . . G .

Cyan

3

000011

блакитний

. . . . GB

Red

4

000100

червоний

. . . R . .

Magenta

5

000101

фіолетовий

. . . R . B

Brawn

20

010100

коричневий

. g . R . .

Light-Gray

7

000111

світло-сірий

. . . RGB

Dark-Gray

56

111000

темно-сірий

r g b . . .

Light-Blue

57

111001

яскраво-синій

r g b . . B

Light-Green

58

111010

яскраво-зелений

r g b .G .

Light-Cyan

59

111011

яскраво-блакитний

r g b .GB

Light-Red

60

111100

малиновий

r g b R . .

Light-Magenta

61

111101

яскраво-фіолетовий

r g b R . B

Yellow

62

111110

жовтий

r g b RG .

White

63

111111

білий

r g b RGB

Для 256 кольорів використовується весь байт–28–256

Після старту процедури  Initgraph вся інформація про встановлену палітру знаходиться в змінній стандартного типу  

 

Type

      PaletteType=record;

     Size:Word;

     Colors:array[1..MaxColor] of Shortint;

end;

Поле Size містить кількість кольорів в палітрі.

Поле Colors містить кольори, що діють, в елементах масиву.

Отримати інформацію про поточну палітру можна за допомогою процедур:

                 GetDefaultPalette(var Palette:PaletteType);

                -getpalette(var Palette:palettetype)

  1.  Getdefaultpalette повертає набір кольорів, встановлений за умовчанням при ініціалізації графіки;
  2.  Getpalette повертає поточний набір кольорів;
  3.  Getpalettesize:word- повертає кількість кольорів, що входять в поточну палітру;
  4.  Getmaxcolor-повертає  максимальну кількість кольорів, що входять в поточну палітру.

У разі, коли програміста не влаштовує палітра, що є, її можна змінити:

         -якщо потрібно зменшити розташування одного кольору, то використовується процедура Setpalette

        -якщо необхідно змінити всю палітру -setallpalette.

Процедура Setpalette(Colornum:word;Color:Shortint);

ColorNum-номер кольору в палітрі;

Color-нове значення кольору;

     Setpalette(0,red);

     Setpalette(7,yellow);

Зміна кольору на екрані відбувається негайно і без очищення екрану.

Процедура Setallpalette(Var Palette) -дозволяє створювати свою палітру  відповідності між програмними і апаратними кольорами.

Змінна Palette-бестипова-перший байт повинен містити кількість кольорівNum у встановленій палітрі, наступні Num байтів повинні містити кольори з апаратної палітри, яка використовуватиметься.

Приклад: накреслити прямокутник на встановленому фоні, потім змінити палітру і знову накреслити прямокутник.

Program DemoPalette;

Uses Crt, Graph;

Var  

       Grd,Grm:integer;

       Pal:PaletteType;

Begin

     Grd:=detect;

     InitGraph(grd,grm,’G:\’);

     Rectangle(10,10,200,200);     {white}

     Delay(1500);

     SetPalette(15,Blue);               {Blue–перо}

     Delay(1500);                          { встановлює палітру}

     Pal.Color[0]:=Red; Pal.Color[1]:=Lightred;

     …

     …

     Pal.Color[15]:=Brawn;

     SetAllPalette(Pal);                   { фон змінений на Red}

     Rectangle(100,100,300,300);   {Brоwn}

     Readkey;

     GetDefaultPalette(Pal);

     SetAllPalette(Pal);

     CloseGraph;

     End.


 

А также другие работы, которые могут Вас заинтересовать

15127. Б. Адамбаев - фольклортанушы 37.5 KB
  ӘОК 8219 Қ64 Б. АДАМБАЕВ ФОЛЬКЛОРТАНУШЫ М.Б. Қоңқашова ӘулиеАта университеті Тараз қ. Қазақ ауыз әдебиеті туралы ғылыми зерттеулер он тоғызыншы ғасырда өз бастауын алды. Бұған дейінгі уақытта қазақ фольклоры жайында жекелеген пікірлер ғана айтылып т
15128. Баймырзаұлы Балуан Шолақ 41.5 KB
  Баймырзаұлы Балуан Шолақ 1864-1916 қазақтың халық композиторы ат ойынының түрлі тәсілін меңгерген өнерпазы күш өнерін көрсеткен спортшысы жауырыны жерге тимеген балуаны. Оның есімін де халық осы соңғы өнеріне сүйсінгендіктен еркелет
15129. Балалардың сүйікті жыршысы - Мұзафар Әлімбай 320 KB
  Балалардың сүйікті жыршысы М.Әлімбаевтың шығармашылығына арналған әдістемелік құрал Ол алуан қырлы талантты ақын Д.Әбілов Кіріспе орнына Қымбатты достым қалай ойлайсыз қазіргі қазақ әдебиеті мен поэ
15130. Батыр жырау - Қожаберген 173.5 KB
  Ел тарихын ұмыттырмаған ән Қожаберген жыраудың шығармаларын сұрыптап толықтырылған жинағын баспаға дайындап жатыр едiк соған сiз алғы соз жазсаңыз деп Қызылжардан телефон шалғанда уәдемдi берiп қалып едiм. Өзiң атқарар iстi бiреу жарқыратып атқарып жатса құдайды...
15131. Бейімбет Майлин 89.5 KB
  Бейімбет Майлин Майлин Бейімбет 1894-1938 Бейімбет поэзия проза драма саласында бірдей өнімді еңбек еткен қаламгер. Ол Садақ қолжазба журналында Айқап журналында Қазақ газетінде жарияланған алғашқы өлеңдерінен бастапақ ел өмірінің сансала көкейкесті мәсе...
15132. Бұқар жырау Қалқаманұлы 39.5 KB
  Қалқаманұлы Бұқар жырау Қалқаманұлы Бұқар жырау 1668 1781 қазақтың ұлы жырауы 18 ғ. жоңғар басқыншыларына қарсы қазақтың азаттық соғысын бастаушысы әрі ұйымдастырушысы атақты Абылай ханның ақылшысы. Шыққан тегі Арғын тайпасының қаржас руынан. Заманындағы сыншылар о
15133. Ғабиден Мұстафин 104.5 KB
  ҒАБИДЕН МҰСТАФИН 1902-1985 Мен әрдайым бүгінгіні шамам келгенше ертеңгіні жаздым. Жазушы алдымен өз дәуірінің жаршысы. Мен өз бойымдағы бүкіл дарыным мен күшқуатымды халық мүддесіне қалтқысыз алаңсыз бағыштаған жазушымын. Менің творчествомның өзегі а...
15134. Ғабит Мүсірепов 55.5 KB
  ҒАБИТ МҮСІРЕПОВ 1902-1985 Қазақ әдебиетінің кеңестік дәуірдегі көрнекті қайраткерлерінің бірі көркемсөз зергері Ғабит Махмұтұлы Мүсірепов 1902 жылы қазіргі Солтүстік Қазақстан облысының Жамбыл ауданында кедей шаруаның отбасында дүниеге келген. Ол алғаш өз а
15135. Есенғали Раушанов 50 KB
  Өлеңнің қара бауыр қасқалдағы Жанат ӘСКЕРБЕКҚЫЗЫ филология ғылымдарының кандидаты. Поэзия әлеміне өлеңнің еңселі ақ ордасын сәнсалтанатымен қымбат жабдығы кестелі тіл шешен сөз шебер өрнегімен келістіре қондырған Есенғали Раушанов сынды ұлт ақыны деуге ә