русс | укр

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

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

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

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


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

Процедуры построения фигур из линий


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


Procedure ...

Rectangle ( x1, y1, x2, y2 : Integer ) ;
рисует контур прямоугольника текущим цветом. x1, y1 — координаты левого верхнего угла прямоугольника. x2, y2 — координаты правого нижнего угла прямоугольника ( необходимо, чтобы 0 ≤ x1 < x2 ≤ GetMaxX и 0 ≤ y1 < y2 ≤ GetMaxY ). Текущий цвет задается процедурой SetColor, текущие параметры линии — процедурой SetLineStyle, а режим построения линии — процедурой SetWriteMode.
Bar ( x1, y1, x2, y2 : Integer ) ;
рисует закрашенный прямоугольник текущим орнаментом и цветом заполнения. x1, y1, x2, y2 — координаты левого верхнего и правого нижнего углов прямоугольника. Орнамент и цвет заполнения задаются процедурой SetFillStyle или SetFillPattern.

Пример 12.9

. . .

For i := 1 to 5 do

Bar ( i*w, i*10, Succ( i )*w + 1, 200 ) ;

. . .

Bar3d ( x1, y1, x2, y2 : Integer; Depth : Word; Top : Boolean ) ;
рисует трехмерный параллелепипед и закрашивает его переднюю грань. x1, y1, x2, y2 — координаты левого верхнего и правого нижнего углов передней грани. Depth — «глубина» параллелепипеда — ширина боковой грани в пикселях (отсчитывается по горизонтали). Top — признак включения верхней грани (если True — верхняя грань вычерчивается, в противном случае верхняя грань не отображается — используется при изображении нескольких параллелепипедов один над другим). В модуле Graph определенны следующие константы:   Const TopOn = True; TopOff = False; Параллелепипед «прозрачен — за не закрашенными гранями могут быть видны другие элементы изображения. Текущий цвет трехмерного контура параллелепипеда задается процедурой SetColor, текущие параметры линии — процедурой SetLineStyle, а режим построения линии — процедурой SetWriteMode. Орнамент и цвет заполнения передней грани задаются процедурой SetFillStyle или SetFillPattern. Процедура часто применяется для построения столбчатых диаграмм. Если возникает ошибка, то GraphResult возвращает значение -6.

Пример 12.10



. . .

{ Типичный параметр «глубины» - 25% ширины параллелепипеда : }

Bar3d ( x1, y1, x2, y2, (x2 - x1 ) div 4, TopOn ) ;

. . .

{ один параллелепипед над другим: }

y0 := 10 ;y1 := 60 ;y2 := 110 ;

x1 := 10 ;x2 := 50 ;

Bar3d ( x1, y0, x2, y1, 10, TopOn ) ;

Bar3d ( x1, y1, x2, y2, 10, TopOff ) ;

. . .

DrawPoly ( NumPoints : Word; var PolyPoints ) ;
рисует текущим цветом ломаную линию, заданную координатами точек излома, включая обе крайние точки (в частности, контур замкнутого многоугольника). NumPoints — число пар координат точек — вершин ломаной, включая обе крайние точки — задаваемых параметром PolyPoints ( при этом для замкнутого n-угольника NumPoints = n + 1 ). PolyPoints — переменная без типа, содержащая пары координат точек излома (координаты должны перечисляться в той последовательности, как они идут по контуру, причем для замкнутого n-угольника первая вершина должна быть повторена в конце перечисления). Координаты точек излома задаются парой значений типа Word: первое определяет горизонтальную, второе — вертикальную координаты. Для них можно использовать следующий определенный в модуле Graph тип: Type PoitType = Record x, y : Word End ; Текущий цвет задается процедурой SetColor, текущие параметры линии — процедурой SetLineStyle, а режим построения линии — процедурой SetWriteMode.

Пример 12.11 (рисунок контура треугольника):

. . .

Const

Triangle : Array [ 1..4 ] of PoitType =

( ( x : 10 ; y : 100 ) ,

( x : 100 ; y : 100 ) ,

( x : 150 ; y : 150 ) ,

( x : 10 ;y : 100 ) ) ;

Begin

. . .

DrawPoly ( SizeOf ( Triangle ) div SizeOf ( PoitType ), Triangle ) ;

. . .

End.

FillPoly ( NumPoints : Word; var PolyPoints ) ;
рисует текущим цветом замкнутый многоугольник и закрашивает его текущим орнаментом и цветом заполнения. NumPoints — число вершин n-угольника ( NumPoints = n + 1 ). PolyPoints — переменная без типа, содержащая пары координат вершин многоугольника (координаты должны перечисляться в той последовательности, как они идут по контуру, причем первая вершина должна быть повторена в конце перечисления). Текущий цвет контура задается процедурой SetColor, текущие параметры линии — процедурой SetLineStyle, а режим построения линии — процедурой SetWriteMode. Орнамент и цвет заполнения задаются процедурой SetFillStyle или SetFillPattern.

Пример 12.12 (рисунок закрашенного пятиугольника):

. . .

Const

Pentagon : Array [ 1..4 ] of PoitType =

( ( x : 50 ; y : 50 ) ,

( x : 75 ; y : 75 ) ,

( x : 62 ; y : 100 ) ,

( x : 48 ; y : 100 ) ,

( x : 25 ; y : 75 ) ,

( x : 50 ;y : 50 ) ) ;

Begin

. . .

FillPoly ( SizeOf ( Pentagon ) div SizeOf ( PoitType ), Pentagon ) ;

. . .

End.

FloodFill ( x, y : Integer; Border : Word ) ;
закрашивает область, ограниченную непрерывной линией, текущим орнаментом и цветом заполнения до границы заданного цвета.   x, y — координаты любой точки внутри закрашиваемой области. Border — цвет линии, до которой производится закрашивание. Если фигура не замкнута, заполнение «разольется» по всему экрану. Если возникает ошибка, то GraphResult возвращает значение -7. Орнамент и цвет заполнения задаются процедурой SetFillStyle или SetFillPattern.

Пример 12.13 (закрашивание прямоугольника):

. . .

SetColor ( Blue ) ;

Rectangle ( 0, 0, 100, 150 ) ;

FloodFill ( 10, 10, Blue ) ;

. . .

SetFillStyle ( Pattern, Color : Word ) ;
задает стандартный орнамент и цвет заполнения фигур. Pattern — задаваемый стандартный параметр орнамента, определяемый одной из следующих констант модуля Graph: Сonst 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. Color — цвет заполнения фигур (номер цвета в палитре). В случае аварийной ситуации (недопустимые входные данные) процедура устанавливает код ошибки: -11, а текущий орнамент и цвет не изменяются.
SetFillPattern ( Pattern : FillPatternType; Color : Word ) ;
задает произвольный (пользовательский) орнамент, а также цвет заполнения фигур. Pattern — задаваемый пользователем орнамент — параметр типа FillPatternType, определенный в модуле Graph:     Type FillPatternType = Array[ 1..8 ] of Byte ; Color — цвет заполнения фигур (номер цвета в палитре). Согласно типу, образец орнамента задается в виде матрицы из 8´8 пикселей. Каждый разряд любого из этих байтов управляет светимостью пикселя, причем первый байт определяет 8 пикселей первой строки на экране, второй байт — 8 пикселей второй строки и т.д. В случае аварийной ситуации (недопустимые входные данные) процедура устанавливает код ошибки: -11, а текущий орнамент и цвет не изменяются.

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

Образец 1 Значение байта Образец 2 Значение байта
                $49                 $00
                $92                 $18
                $49                 $24
                $92                 $42
                $49                 $42
                $92                 $24
                $49                 $18
                $92                 $00

Закрашенному квадрату соответствует 1, не закрашенному — 0. Таким образом, получаем двоичное представление шестнадцатеричного числа: например, первая строка первого образца: 01001001 — двоичное представление шестнадцатеричного числа 49.

Uses

Crt , Graph;

Const

MyPattern1 : FillPatternType = ( $49, $92, $49, $92, $49, $92, $49, $92 );

MyPattern2 : FillPatternType = ( $00, $18, $24, $42, $42, $24, $18, $00 );

Var

Driver, Mode : Integer ;

Begin

Driver := Detect;

InitGraph ( Driver, Mode, ’’ ) ;

SetFillStyle ( UserFill, White ) ;

{ левый верхний квадрат : }

SetFillPattern ( MyPattern1, 1 );

Bar ( 0, 0, GetMaxX div 2, GetMaxY div 2 );

{ правый нижний квадрат : }

SetFillPattern ( MyPattern2, 2 );

Bar ( GetMaxX div 2, GetMaxY div 2, GetMaxX, GetMaxY );

ReadLn;

CloseGraph

End.



<== предыдущая лекция | следующая лекция ==>
Procedure ... | Procedure ...


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


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

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

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


 


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

 
 

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

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