68890

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

Лекция

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

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

Украинкский

2014-09-26

65.5 KB

0 чел.

ЛЕКЦІЯ 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.


 

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

8636. Философия Платона. Платоновская идея 125.5 KB
  Дайте толкование мифу о пещере. Что символизируют люди в пещере, тени, вещи, костёр, солнце. Дайте определения Платоновскому понятию «идея». Дайте определения Платоновскому понятию «идея идей».
8637. Западная философия 19 века (философия жизни, экзистенциализм, позитивизм, психоанализ) 174.5 KB
  Западная философия 19 века (философия жизни, экзистенциализм, позитивизм, психоанализ) Вопросы: 1. Сформулируйте основной тезис экзистенциализма. Какие виды экзистенциализма следует различать? 2. Раскройте содержание основных принципов экзисте...
8638. Философия античности. Диалектика мифа. Квантовая теория и истоки учения об атоме и другие 305.5 KB
  Философия античности. Лосев А.Ф.Диалектика мифа. Гейзенберг. В.Квантовая теория и истоки учения об атоме. Платон: Природа души и ее свойства. Мир идеей и его познание. Теоретическое знание и философское познание. Философия как стремление...
8639. Философия Ренессанса. Гайденко П.П. Культура эпохи Возрождения. И другие 214.5 KB
  Философия Ренессанса. Гайденко П.П. Культура эпохи Возрождения. Джованни Пико делла Мирандола. Речь о достоинстве человека. Никколо Макиавелли. Государь. Лосев А.Ф. Бытовые типы Возрождения. Оборотная сторона титанизма. Гайденко П.П. Культура ...
8640. Немецкая классическая философия. Теория познания. Нравственная философия 263.5 KB
  Немецкая классическая философия. И. Кант: Теория познания. Нравственная философия. Г.В.Ф. Гегель: Наука логики. О природе диалектического. Всемирная история. В конце XVIII – XIX вв. в Германии наступил расцвет философии, который можно сравнит...
8641. Философия Нового времени и Просвещения. Экспериментальный метод научного познания 158 KB
  Философия Нового времени и Просвещения. Черникова И.В. Механизм – образ природы Нового времени. Рене Декарт: Научное познание: методология рационализма. Интеллектуальная интуиция. Френсис Бэкон: Цель научного познания. Экспериментальный метод н...
8642. Философия Средневековья. Августин Аврелий и Фома Аквинский 225 KB
  Философия Средневековья. Августин Аврелий и Фома Аквинский: О философии. Поиск Бога и доказательство Его бытия. Теодицея: причины возникновения зла в мире. Теория познания: вера и разум. Августин Аврелий. Время и вечность. Библия. Первая книга ...
8643. Определение философии. Речь Гегеля. Энциклопедия философских наук 181 KB
  Определение философии. Гегель Г.В.Ф. Речь Гегеля. Энциклопедия философских наук. Соловьев Вл. Исторические дела философии. Хайдеггер М. Основные понятия метафизики. Мамардашвили М.К. Философия - это сознание вслух. Г.В.Ф. Гегель (1770 - 18...
8644. Античная греческая философия 92.5 KB
  Античная греческая философия. ПЛАН 1. Становление античной философии. Философия досократиков (Милетская школа, Пифагор, Гераклит, Элейская школа, Демокрит). Философия классической эпохи (Софисты, Сократ, Платон, Аристотель). Фи...