русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Выбор палитры, заполнения


Дата добавления: 2015-09-15; просмотров: 909; Нарушение авторских прав


 

Максимальный набор цветов доступных пользователю называется палитрой и определяется выбранным графическим режимом. В модуле Graph определены подпрограммы позволяющие определить размер палитры, т.е. максимальное количество доступных цветов,текущий цвет пикселей и фона, изменить некоторые цвета палитры на новые или полностью заменить всю палитру цветов, получить все параметры палитры.

SetPalette(N:word,Color:shortint) - процедура замены цвета N-ой позиции палитры на Color.

Размер палитры определяется функцией GetPaletteSizeтипа word.

SetAllPalette(var Palette:PaletteType) - процедура замены всех цветов палитры на указанные, где Palette параметр, тип которого PaletteType определен в Graph.tpu как:

Type

PaletteType = record

size:byte;

Colors:array[0..MaxColor] of Shortint

end;

Первый байт задает размер палитры. Следующие n байтов указывают на устанавливаемые цвета палитры. Каждый цвет может принимать значения от -1 до 15. Значение -1 не изменяет ранее установленного цвета палитры. Следует заметить, что все изменения, вносимые в палитру будут сразу отображаться на экране, т.е. вcе появления измененного цвета палитры будут выводиться

в соответствии с новым. При неправильной передаче параметров процедуры SetPalette и SetAllPalette не выполняются, при этом функция GraphResult будет возвращать значение -11.

Для CGA адаптера указанные процедуры не работают.Рассмотренный ниже пример приведен для ERA,VGA адаптеров и производит вывод окружностей палитрой для установленного режима, затем по нажатию клавиши Enter заменяет цвет изображенных окружностей в соответствии с вновь определенным.

Пример.

uses Graph,Crt;

var

Driver,Mode,Color:integer;

Palette:PaletteType;

begin

Driver:=Detect;

InitGraph(Driver,Mode,'');

for i:=0 to 3 do

begin



SetColor(i);

Circle(GetMaxX div 2,GetMaxY div 2,i*50)

end;

readln;

With Palette do

Begin

size:=4;

Colors[0]:=5;

Colors[1]:=10;

Colors[2]:=14;

Colors[3]:=15;

SetAllPalette(Palette);

end;

readln;

CloseGraph;

end.

GetPalette(var Palette:PaletteType) - процедура, возвраща­ющая текущую палитру и ее размер п переменную Palette , тип которой PaletteType определен в Graph.tpu .

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

Uses Graph,Crt;

Var

Driver,Mode,Color:integer;

Palette:PaletteType;

begin

Driver:=Detect;

InitGraph(Driver,Mode,'');

GetPalette(Palette);

for Color:=0 to Palette.size-1 do

begin



SetColor(Color);

Line(0,Color*10,100,Color*10)

end;

readln;

repeat

SetPalette(Random(Palette.size),

Random(Palette.size));

Delay(200);

until KeyPressed;

CloseGraph;

end.

GetDefaultPalette(var Pal PaletteType):PaletteType -функция, возвращающая палитру, устанавливаемую при инициализа-

ции графического режима.

Пример использования GetDefaultPalette.

Uses Graph;

Var oldpal,newpal:PaletteType;

Detect,Mode : integer;

Begin

Driver:=Detect;

InitGraph(,Detect,Mode,''); { инициализация графики }

GetDefaultPalette(oldpal); { сохранить старую }

newpal:=oldpal; { палитру }

{ модификация палитры }

{ восстановление исходной палитры }

SetAllPalette(oldpal);

ClearDevice;

readln;

CloseGraph

End.

C помощью функции GetColor можно получить цвет выводимых пикселов, функция GetMaxColor возвращает максимальное количество цветов, функция GetBKColor возвращает цвет фона. Все функции имеют тип word.

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

SetFillPattern(Pattern:FillPatternType; Color:word), которая устанавливает образец и цвет заполнения. Шаблон задается параметром Pattern, цвет параметром Color.

Тип FillPatternType определен как:

type FillPatternType=array[1..8] of byte;

Образец заполнения основывается на байтовых значениях массива Pattern. Массив шаблона имеет длину 8 байтов, каждый из которых соответствует 8 пикселям в шаблоне. Если бит в байте равен 1, пиксел отображается на экран, если 0 не отображается.

Пользователь может создавать свои шаблоны заполнения, которые можно выбрать процедурой SetFillStyle.

Пример. Рассмотрим шаблон заполнения шахматными "клетками" прямоугольника.

Первый байт будет определять битовый массив:(10101010)( шестнадцатеричное значение $AA), второй байт массив (01010101)( шестнадцатеричное значение $55) и т.д.

Uses Graph;

Var Detect,Mode : integer;

Const UserFill:FillPatternType=

($AA, $55, $AA,$55, $AA, $55, $AA, $55);

Begin

Driver:=Detect;

InitGraph(Detect,Mode,''); { инициализация графики }

SetFillPattern(UserFill,Green);

Bar(0,0,100,100);

readln;

CloseGraph

End.

Получить шаблон заполнения, определенный пользователем можно процедурой GetFillPattern(var Pattern:FillPatternType).Если ранее не вызывалась процедура SetFillPattern, то Pattern возвращает массив полей со значениями $FF.

Кроме цвета можно получить установки стиля линии и заполнения областей.

Процедура GetLineSettings(var LineInfo:LineSettingsType) возвращает текущий стиль, образец и толщину линии.

Тип LineSettingsType определен как:

type LineSettingsType =

record

LineStyle:word;{ стиль линии }

Pattern:word; { образец }

Thickness:word { толщина линии }

end;

Процедура GetFillSettings(var FillInfo:FillSettingsType) возвращает последний образец заполнения и цвет, установленный процедурами SetFillStyle и SetFillPettern в переменной типа FillSettinsType, определенную как:

type FillSettingsType=

record

Pattern:word;{ образец заполнения }

Color:word; { текущий цвет }

end;

Если Pattern=UserFill, то получить определенный пользователем образец заполнения можно процедурой GetFillPattern.

 

 



<== предыдущая лекция | следующая лекция ==>
Установки графических окон, страницы | Организация библиотек пользователя


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.