Основы алгоритмизации и программирования. Часть четвертая. Файловая система Turbo Pascal. Асламова В.С - 53 стр.

UptoLike

105
Таблица 9. Соответствие параметров BitBlt логическим операциям
Имя константы Значение Операция
CopyPyt 0 MOV
XORPut 1 XOR
OrPut 2 OR
AndPut 3 AND
NotPut 4 NOT
Настройка палитры
После инициализации графического режима краски в палитре распре-
делены в соответствии с нижеприведённой таблицей.
Таблица 10. Компоненты цвета.
Номер компо-
ненты палитры
Константа
цвета
Номер
краски
Цвет краски
0 Black 0 Чёрный
1 Blue 1 Синий
2 Green 2 Зелёный
3 Cyan 3 Бирюзовый
4 Red 4 Красный
5 Magenta 5 Фиолетовый
6 Brown 6 Коричневый
7 LightGray 7 Светло-серый
8 DarkGray 8 Тёмно-серый
9 LightBlue 9 Голубой
10 LightGreen 10 Светло-зелёный
11 LightCyan 11 Светло-бирюзовый
12 LightRed 12 Розовый
13 LightMagenta 13 Светло-фиолетовый
14 Yellow 14 Жёлтый
15 White 15 Белый
В графическом режиме предусмотрена возможность изменения рас-
пределения красок по компонентам. Для этого применяется процедура:
106
SetPalette(ColorNum:Word;Color:Shortlnt) - устанавливает цвет с номе-
ром Color в компоненте палитры с номером ColorNum. Если с помощью
указанной процедуры в компоненту 1 поместить краску 2 оператором
SetPalette (1, Green);
в палитре будут 2 компоненты с краской зеленого цвета, а краски синего
цвета не будет вообще. Впрочем, нетрудно вернуть синюю краску опера-
тором в компоненту с номером i.
SetPalette (i, Blue);
Применяя
настройку палитры, можно сделать незаметным сам процесс
стирания старого и построения нового изображения движущегося предмета.
Пример:
Изобразите перемещение круга слева на право.
var i:integer; {Вставка описания процедуры инициализации}
{$1 D:/pas/init.pas}
begin
Init; {Вызов процедуры инициализации графического
режима}
SetBkColor(blue); {Установка синего цвета фона}
SetPalette(14,Blue); {Установка в компоненте 14 синей краски, той же,
что и для фона}
for i: =l to GetMaxX-100 do {Изображение
движущегося круга}
begin
SetColor(14) ; {Установка цвета круга из компоненты 14}
SetFillStyle(l,14); {Вывод синего круга на синем фоне экрана, круг не
виден}
FillEllipse(i+14,getMaxY div 2,50,50); {Установка желтого цвета в
компоненте 14, сразу проявляется
желтый круг целиком}
SetPalette(14,Yellow);
Delay(400); {Задержка}
SetPalette(14,Blue); {Установка синего цвета в компоненте 14, синий
круг на синем фоне сразу становится невидимым}
SetColor(1); {Установка цвета круга
из компоненты 1}
SetFillStyle(1, 1); {Стирание нарисованного круга закрашиванием си-
ним цветом на синем фоне}
FillEllipse(i+14, getMaxY div 2,50,50);
end;
CloseGraph;
end.
        Таблица 9. Соответствие параметров BitBlt логическим операциям                SetPalette(ColorNum:Word;Color:Shortlnt) - устанавливает цвет с номе-
          Имя константы             Значение            Операция              ром Color в компоненте палитры с номером ColorNum. Если с помощью
      CopyPyt                 0                      MOV                      указанной процедуры в компоненту №1 поместить краску №2 оператором
      XORPut                  1                      XOR                              SetPalette (1, Green);
      OrPut                   2                      OR                        в палитре будут 2 компоненты с краской зеленого цвета, а краски синего
      AndPut                  3                      AND                      цвета не будет вообще. Впрочем, нетрудно вернуть синюю краску опера-
      NotPut                  4                      NOT                      тором в компоненту с номером i.
                                                                                      SetPalette (i, Blue);
                                                                                      Применяя настройку палитры, можно сделать незаметным сам процесс
                     Настройка палитры                                        стирания старого и построения нового изображения движущегося предмета.
                                                                                      Пример:
     После инициализации графического режима краски в палитре распре-
                                                                                 Изобразите перемещение круга слева на право.
делены в соответствии с нижеприведённой таблицей.
                                                                                 var i:integer;            {Вставка описания процедуры инициализации}
                                              Таблица 10. Компоненты цвета.                                 {$1 D:/pas/init.pas}
                                                                                 begin
    Номер компо-      Константа           Номер          Цвет краски             Init;                      {Вызов процедуры инициализации графического
   ненты палитры         цвета            краски                                                            режима}
  0                 Black                0           Чёрный                      SetBkColor(blue);           {Установка синего цвета фона}
  1                 Blue                 1           Синий                       SetPalette(14,Blue);       {Установка в компоненте №14 синей краски, той же,
                                                                                                            что и для фона}
  2                 Green                2           Зелёный                     for i: =l to GetMaxX-100 do {Изображение движущегося круга}
  3                 Cyan                 3           Бирюзовый                   begin
  4                 Red                  4           Красный                      SetColor(14) ;            {Установка цвета круга из компоненты №14}
  5                 Magenta              5           Фиолетовый                   SetFillStyle(l,14);       {Вывод синего круга на синем фоне экрана, круг не
                                                                                                            виден}
  6                 Brown                6           Коричневый                   FillEllipse(i+14,getMaxY div 2,50,50);           {Установка желтого цвета в
  7                 LightGray            7           Светло-серый                                                             компоненте №14, сразу проявляется
  8                 DarkGray             8           Тёмно-серый                                                              желтый круг целиком}
  9                 LightBlue            9           Голубой                     SetPalette(14,Yellow);
                                                                                 Delay(400); {Задержка}
  10                LightGreen           10          Светло-зелёный              SetPalette(14,Blue);       {Установка синего цвета в компоненте №14, синий
  11                LightCyan            11          Светло-бирюзовый                                       круг на синем фоне сразу становится невидимым}
  12                LightRed             12          Розовый                     SetColor(1);               {Установка цвета круга из компоненты №1}
  13                LightMagenta         13          Светло-фиолетовый           SetFillStyle(1, 1);        {Стирание нарисованного круга закрашиванием си-
                                                                                                            ним цветом на синем фоне}
  14                Yellow               14          Жёлтый
                                                                                 FillEllipse(i+14, getMaxY div 2,50,50);
  15                White                15          Белый                       end;
                                                                                 CloseGraph;
      В графическом режиме предусмотрена возможность изменения рас-              end.
пределения красок по компонентам. Для этого применяется процедура:


                                   105                                                                              106