русс | укр

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

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

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

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


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

Задание типа заливки


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


В модуле Graph предусмотрены процедуры, с помощью которых можно заполнить (залить) определенным «узором» любую замкнутую область изображения. Вид «узора» задается так называемым шаблоном заливки. В Турбо Паскале предопределен ряд стандартных шаблонов, но кроме того, имеется возможность конструировать собственные.

19.5.2.1. Построение шаблона заливки. Рассмотрим, как можно получить на экране полутоновые изображений любого цвета из стандартного набора цветов, т.е. как расширить за счет введения полутоновых заполнений цветовые возможности адаптера. Составим шаблоны для заливки полутоновых изображений (рис. 19.21).

               
               
               
               
               
               
               
               
3%
               
               
               
               
               
               
               
               
6,25%
               
               
               
               
               
               
               
               
12,5%
               
               
               
               
               
               
               
               
0%

На этом рисунке изображены типовые матрицы 8x8, используя которые можно создать полутоновые изображения любыми двумя {435}



               
               
               
               
               
               
               
               
25%
               
               
               
               
               
               
               
               
37,5%
               
               
               
               
               
               
               
               
50%
               
               
               
               
               
               
               
               
62,5%

 

               
               
               
               
               
               
               
               
87,5%

 

               
               
               
               
               
               
               
               
75%
               
               
               
               
               
               
               
               
100%
               
               
               
               
               
               
               
               
93%

 

 

Рис. 19.21

цветами. Тип переменной для задания матрицы заполнения объявлен в модуле Graph как массив:

TYPE

FillPatternType : Array [1..8] of Byte

Таким образом, каждую матрицу можно представить, как показано на рис. 19.22.

Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7 Byte 8

7 6 5 4 3 2 1 0

               
               
               
               
               
               
               
               

 

Рис. 19.22 {436}

Если рассмотреть первую строку в шаблоне 25%-го заполнения, то получится 01000100 в двоичной системе счисления (68 в десятеричной или $44 в шестнадцатиричной). Следующая строка — 00010001 в двоичной (17 в десятеричной или $11 в шестнадцатеричной) и т.д. В результате мы можем получить константу

CONST

Fill_25 : FillPatternType =

( $44, $17, $44, $17, $44, $17, $44, $17 )

Подобные константы можно задать для любого из шаблонов с рис. 19.21. Если программы должны работать на ПЭВМ с монохромным дисплеем (MDA, Hercules), то наличие разных по яркости шаблонов заполнения может скомпенсировать отсутствие цветных возможностей у монитора.

19.5.2.2. Назначение шаблона заполнения (заливки). Оно производится процедурой

SetFillStyte( Pattern : Word; Color : Word )

где параметр Pattern определяет вид шаблона заливки, a Color — его цвет. Все разрешенные значения параметра Pattern предопределены в модуле Graph в виде констант:

CONST

EmptyFill = 0 { сплошная заливка цветом фона }

SolidFill = 1 { сплошная заливка текущим цветом }

LineFill = 2 { заливка типа === }

LtSlashFill = 3 { заливка типа /// }

SlashFill = 4 { заливка жирными линиями типа /// }

BkSlashFill = 5 { заливка жирными линиями типа \\\ }

LtBkSlashFill = 6 { заливка типа \\\ }

HatchFill = 7 { заливка редкой штриховкой }

XHatchFill = 8 { заливка частой штриховкой }

InterleaveFill =9 { заливка прерывистой линией }

WideDotFill = 10 { заливка редкими точками }

CloseDotFill = 11 { заливка частыми точками }

UserFill = 12 { заливка, определенная программистом }

Наиболее интересна здесь константа UserFill. Она используется для определения типа заливки, который предварительно был задан в программе. Для задания своего нового шаблона необходимо воспользоваться процедурой

SetFillPattern(PattMatrix : FillPatternType; Color : Word)

передав ей в параметре PattMatrix матрицу шаблона заливки и указав цвет параметром Color. Эта процедура по действию, вообще говоря, {437} аналогична SetFillStyle, но устанавливает только «самодельные» шаблоны. Процедура SetFillStyle удобнее, особенно в приложениях деловой графики (гистограммы, круговые диаграммы и т.п.). Задавая хотя бы раз новый шаблон, мы автоматически связываем его со значением UserFill и далее можем манипулировать всеми тринадцатью шаблонами. Если же задать UserFill, не определив перед этим новый шаблон, то функция GraphResult возвратит значение -11 (grError) и все установки вида шаблона и цвета останутся прежними. По умолчанию устанавливается шаблон SolidFill и цвет с номером, максимальным для текущего графического режима.

Несколько слов о назначении цвета при заливке. В обеих процедурах назначения шаблона переменная Color определяет цвет, которым исполняется шаблон. Цвет фона при этом остается неизменным. Это создает некоторые трудности при создании цветовой смеси. Например, цвет фона обычно задается черным (Black), а требуется создать 50%-ю смесь коричневого и синего цветов. Казалось бы, просто: рисуем фигуру, заливаем ее сплошным коричневым и потом заливаем ее 50%-м шаблоном синего. Однако после этих операций получится фигура, залитая чисто синим 50%-и яркости. Дело в том, что процедуры заливки в Турбо Паскале реализованы, на наш взгляд, не очень корректно (чего нельзя сказать о реализации этих процедур в системе Quick Pascal фирмы Microsoft): там, где в двоичном коде шаблона стоят единицы, процедуры ставят точки цвета Color, а там, где нули, — вместо того чтобы ничего не рисовать, они ставят точки цвета текущего фона. Выход из этой ситуации может быть найден с помощью средств, описанных в разд. 19.5. «Управление палитрой».

19.5.2.3. Анализ шаблона заполнения. Рассмотрим процедуры получения информации о текущих установках шаблонов заливки. Так, процедура

GetFillSettings(VAR FillType : FillSettingsType )

возвращает в переменной FillType предопределенного типа

TYPE

FillSettingsType = RECORD

Pattern : Word; { шаблон }

Color : Word; { цвет }

END;

номер шаблона из списка, представленного при описании процедуры SetFillStyle (поле Pattern), и цвет, которым наносится этот шаблон (поле Color). Если значение поля Pattern оказалось равным UserFill, {438} то для получения подробной информации следует вызвать процедуру

GetFillPattern( VAR PattMatrix : FillPatternType )

возвращающую в переменной типа FillPatternType матрицу последнего определенного пользователем шаблона.



<== предыдущая лекция | следующая лекция ==>
Немного о цветах | Заливка областей изображения


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


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

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

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


 


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

 
 

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

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