Турбо С: руководство пользователя. Часть 2

Турбо С: руководство пользователя. Часть 2 - Стр. 8

Печать PDF
Индекс материала
Турбо С: руководство пользователя. Часть 2
Стр. 2
Стр. 3
Стр. 4
Стр. 5
Стр. 6
Стр. 7
Стр. 8
Стр. 9
Стр. 10
Стр. 11
Стр. 12
Стр. 13
Стр. 14
Стр. 15
Стр. 16
Стр. 17
Стр. 18
Стр. 19
Стр. 20
Стр. 21
Стр. 22
Стр. 23
Стр. 24
Стр. 25
Стр. 26
Стр. 27
Стр. 28
Стр. 29
Стр. 30
Стр. 31
Стр. 32
Стр. 33
Стр. 34
Стр. 35
Стр. 36
Стр. 37
Стр. 38
Стр. 39
Стр. 40
Стр. 41
Стр. 42
Стр. 43
Стр. 44
Стр. 45
Стр. 46
Стр. 47
Стр. 48
Стр. 49
Стр. 50
Стр. 51
Стр. 52
Стр. 53
Стр. 54
Стр. 55
Стр. 56
Все страницы















          Управление  цветом
          ------------------

          Ниже приведено краткое описание функций управления цветом.

     =================================================================

        Получение информации о цвете:
       getbkcolor      возвращает текущий цвет фона
       getcolor        возвращает текущий цвет вычерчивания
       getdefaultpalette возвращает структуру, определяющую палитру
       getmaxcolor     возвращает максимальное значение, которое можно
                       присвоить  точке  растра  в текущем графическом
                       режиме
       getpalette      возвращает текущую палитру и ее размер
       getpalettesize  возвращает размер палитры (т.е справочной  таб-
                       лицы палитры)

        Установка одного или нескольких цветов:
       setallpalette   изменяет все цвета палитры на заданные
       setbkcolor      устанавливает текущий цвет фона
       setcolor        устанавливает текущий цвет вычерчивания

                         - 61,62 -

       setpalette      изменяет один  цвет  палитры в соответствии с
                       заданным аргументом

     =================================================================

          Перед общим описанием работы этих функций мы сперва приведем
     базовые сведения о том,  как в действительности создается цвет на
     вашем графическом экране.


          Точки растра и палитры
          ----------------------

          Графический экран  состоит  из массива точек растра,  каждая
     точка растра соответствует одной (цветной) точке на экране. Вели-
     чина (значение)  такой  точки  растра  непосредственно  не задает
     цвет; она является индексом в таблице цветов,  называемой  палит-
     рой. Элемент  палитры,  соответствующий  заданному значению точки
     растра, содержит информацию о цвете данной точки.

          Данная косвенная схема имеет ряд применений. Хотя аппаратура
     может быть способна отображать много цветов,  в конкретный момент

     времени может отображаться только некоторое подмножество  из этих
     цветов. Число  цветов, способных отображаться одновременно, равно
     числу элементов в палитре (размеру палитры). К примеру, EGA аппа-
     ратура может производить 64 различных цвета,  но только 16 из них
     могут отображаться одновременно; размер палитры для EGA=16.

          Размер палитры size определяет диапазон значений точек раст-
     ра: от 0 до (size-1). Функция getmaxcolor возвращает максимальное
     значение  точки растра (size-1) для текущих графического адаптера
     и режима.

          При обсуждении графических функций Турбо Си мы часто исполь-
     зуем термин "цвет"; например, текущий цвет вычерчивания, цвет за-
     полнения и цвет точки растра.  Фактически этот цвет является зна-
     чением  точки растра,  т.  е.  представляется индексом в палитре.
     Только палитра определяет действительный цвет на экране.  Манипу-
     лируя палитрой,  вы можете изменять действительно отображаемый на
     экране цвет,  даже без изменений значения точки растра (цвета вы-
     черчивания, цвета заполнения и т.д.).




                         - 63,64 -

          Цвет фона и вычерчивания
          ------------------------

          Цвет фона  всегда соответствует значению 0 точки растра. При
     очистке некоторой области в цвет фона,  точки растра этой области
     просто устанавливаются в 0.

          Цвет вычерчивания соответствует значению, в которое устанав-
     ливаются точки растра при вычерчивании линий.  Вы выбираете  цвет

     вычерчивания с помощью функций setcolor(n), где n есть допустимое
     для текущей палитры значение точки растра.



          Управление цветом на CGA
          ------------------------

          Из-за различий в графической аппаратуре  действительное  уп-
     равление  цветом  несколько различается на EGA и CGA,  поэтому мы
     опишем эти адаптеры раздельно. Управление цветом на адаптере AT&T
     и, при низком разрешении, на MCGA аналогично управлению цветом на
     CGA.


          На CGA вы можете выбирать между отображением графики в  низ-
     ком разрешении (320x200),  что позволит вам использовать 4 цвета,
     и в высоком разрешении (640x200), при котором вы можете использо-
     вать 2 цвета.



               Низкое разрешение CGA.

          В режимах  низкого  разрешения  вы можете выбирать между че-
     тырьмя предопределенными четырехцветными палитрами.  В  любой  из
     этих  палитр  вы  можете  устанавливать только ее первый элемент;
     элементы 1,  2,  3 - фиксированы. Первый элемент палитры (цвет 0)
     является цветом фона. Этот цвет фона может принимать значение лю-
     бого из 16 доступных цветов (смотри таблицу).

          Выбор конкретной палитры осуществляется путем выбора опреде-
     ленного режима (CGAC0, CGAC1, CGAC2, CGAC3); эти режимы соответс-
     твуют цветовым палитрам от 0 до 3,  что  отображено  в  следующей
     таблице. Цвета вычерчивания для CGA и соответствующие им констан-
     ты определены в файле graphics.h.

                         - 65,66 -


     -----------------------------------------------------------------
        Номер палитры    Цвет, соответствующий значению точки растра
                               1              2            3
     -----------------------------------------------------------------
             0           CGA_LIGHTGREEN  CGA_LIGHTRED     CGA_YELLOW
                        (светлозеленый) (светлокрасный)   (желтый)
             1           CGA_LIGHTCYAN   CGA_LIGHTMAGENTA CGA_WHITE
                        (светлоголубой) (светломалиновый) (белый)
             2           CGA_GREEN       CGA_RED          CGA_BROWN
                         (зеленый)       (красный)        (коричневый)
             3           CGA_CYAN        CGA_MAGENTA     CGA_LIGHTGRAY
                         (голубой)      (малиновый)      (светлосерый)
     -----------------------------------------------------------------

          Для того, чтобы назначить один из этих цветов цветом рисова-
     ния для CGA, вызовите функцию setcolor, передав ей в качестве ар-
     гумента либо номер цвета, либо соответствующее символическое имя;
     например, если  вы используете палитру 3 и хотите назначить голу-
     бой цветом рисования:

          setcolor(1); или setcolor(CGA_CYAN);


          Доступные на CGA цвета фона,  описанные в GRAPHICS.H, приве-
     дены в следующей таблице.

           ----------------------------------------------
           Числовое  Символическая     Соответствующий
           значение    константа          цвет
           ----------------------------------------------
              0      BLACK             ЧЕРНЫЙ
              1      BLUE              СИНИЙ
              2      GREEN             ЗЕЛЕНЫЙ
              3      CYAN              ГОЛУБОЙ
              4      RED               КРАСНЫЙ
              5      MAGENTA           МАЛИНОВЫЙ
              6      BROWN             КОРИЧНЕВЫЙ
              7      LIGHTGRAY         СВЕТЛОСЕРЫЙ
              8      DARKGRAY          ТЕМНОСЕРЫЙ
              9      LIGHTBLUE         СВЕТЛОСИНИЙ
              10     LIGHTGREEN        СВЕТЛОЗЕЛЕНЫЙ
              11     LIGHTCYAN         СВЕТЛОГОЛУБОЙ
              12     LIGHTRED          СВЕТЛОКРАСНЫЙ
              13     LIGHTMAGENTA      СВЕТЛОМАЛИНОВЫЙ

                         - 67,68 -

              14     YELLOW            ЖЕЛТЫЙ
              15     WHITE             БЕЛЫЙ
            ---------------------------------------------

          Для присваивания одного из этих цветов цвету фона на CGA ис-
     пользуйте setbkcolor(color), где color - один из элементов приве-
     денной выше таблицы.  Отметим,  что для CGA этот цвет не является
     значением точки растра (индексом палитры); он непосредственно за-
     дает действительный цвет.



               Высокое разрешение CGA

          В режиме  высокого  разрешения  (640x200) CGA отображает два
     цвета:  черный цвет фона и цветное  изображение.  Значение  точек