Графические возможности TurboPascal 7.0 — страница 14

  • Просмотров 6226
  • Скачиваний 578
  • Размер файла 3666
    Кб

установка цвета фона изменяет цвет активных пикселей. Замечу, что после замены Цвета фона на любой, отличный от 0 (Black) цвет, Вы не сможете более использовать цвет 0 как черный, он будет заменяться на цвет фона, т.к. процедуры модуля Graph интерпретируют цвет с номером 0 как цвет фона. Это озна­чает, в частности, что Вы уже не сможете вернуть фону черный цвет! Если Ваш ПК оснащен цветным экраном, следующая программа продемонстрирует

работу процедуры SetBkColor. Программа выводит десять вложенных друг в друга прямоугольников, после чего циклически меняет цвет фона. Для выхода из программы достаточно нажать на любую клавишу. Uses Graph, CRT; Const NC: array [0..15] of String [12] = ('Black','Blue','Green','Cyan','Red','Magenta', 'Brown','LightGray','DarkGray','LightBlue', 'LightGreen','LightCyan','LightRed', 1LightMagenta','Yellow','White'); var d, r, e, k, color, dx, dy: Integer; begin {Инициируем графику} d := Detect; InitGraph(d, r, "); e := GraphResult; if e <> grOK then WriteLn(GraphErrorMsg(e)) else begin {Выводим

текст в центре экрана} OutTextXY(200,GetMaxY div 2,'BACKGROUND COLOR'); dx -:= GetMaxX div 30; {Приращение длины} dy := GetMaxY div 25; {Приращение высоты} for k := 0 to 9 do {Выводим 10 прямоугольников} Rectangle(k*dx,k*dy,GetMaxX-k*dx,GetMaxY-k*dy); color := black; (Начальный цвет фона} repeat {Цикл смены фона} SetBkColor(color); SetFillStyle(0,Color); Bar(345,GetMaxY div 2,440,GetMaxY div 2+8); OutTextXY(345,GetMaxY div 2,NC[color]); delay(1000); inc(color); if color > White then color := Black until KeyPressed; if ReadKey=#0 then к := ord(ReadKey); CloseGraph end end. Функция GetBkColor. Возвращает значение типа Word, содержащее

текущий цвет фона. Заголовок: Function GetBkColor: Word; Процедура SetPalette. Заменяет один из цветов палитры на новый цвет. Заго­ловок: Procedure SetPalette(N: Word; Color: ShortInt); Здесь N- номер цвета в палитре; Color - номер вновь устанавливаемого цвета. Данная процедура может работать только с адаптерами EGA или VGA. Она не должна использоваться с IBM8514 или 256-цветным вариантом VGA - для этих адапте­ров предназначена особая процедура SetRGBPalette (см. ниже). Первоначальное

раз­мещение цветов в палитрах EGA/VGA соответствует последовательности их описания константами Black,...,White, т.е. цвет с индексом 0 - черный, 1 - синий, 2 - зеленый и т.д. После обращения к процедуре все фрагменты изображения, выполненные цветом с индексом N из палитры цветов, получат цвет Color. Например, если выполнить опе­ратор SetPalette(2,White) ; то цвет с индексом 2 (первоначально это - бирюзовый цвет Cyan) будет заменен на белый. Замечу, что цвет с

индексом 0 отождествляется с цветом фона и может изме­няться наряду с любым другим цветом. Функция GetPaletteSize. Возвращает значение типа Integer, содержащее раз­мер палитры (максимальное количество доступных цветов). Заголовок: Function GetPaletteSize: Integer; Процедура GetDefaultPalette. Возвращает структуру палитры, устанавли­ваемую по умолчанию (в режиме автонастройки). Заголовок: Procedure GetDefaultPalette(var Palette: PaletteType); Здесь Palette - переменная типа PaletteType (см.