русс | укр

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

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

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

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


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

ГРАФИКА


Дата добавления: 2014-11-28; просмотров: 732; Нарушение авторских прав


1. Графический режим.Графический экран дисплея состоит из точек, которые можно засвечивать определённым цветом или гасить, в результате чего на экране создаётся некоторое изображение. Точки называют пикселями. Количество точек на экране может быть различным. Это зависит от качества монитора. Рассмотрим экран, который имеет 640 точек в горизонтальном (х) направлении и 480 — в вертикальном (у). Начало отсчета точек находится в левом верхнем углу экрана. Каждая точка характеризуется двумя координатами (х, у). Примеры размещения некоторых точек на экране показаны на рисунке 3.

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

Сам модуль может находиться в библиотеке Turbo.tpl или в некотором каталоге на диске. В последнем случае модуль необходимо присоединить командой usesв начале программы. Для работы с графикой необходим также файл egavga.bgi - драйвер для VGA адаптера или файл cga.bgi для соответсвующего CGA адаптера монитора.

Рис. 3. Координаты точек на графическом экране 640x480.

Для построения изображений сначала нужно задать графический режим. Это делается так:

<разделы описаний и объявлений конкретной программы>;

{Переменные для определения характеристик дисплея]

vardriver, mode : integer;

Begin

driver := detect; {detect - стандартная постоянная}

{задание графического режима}

initgraph(driver, mode, ");

if graphresult <>0 then

Begin

writeln('Графический режим задать не удалось');

halt

end;

<текст конкретной программы с графическими командами>

End.

2. Процедуры и функции для графических построений.Рассмотрим процедуры модуля Graph,предназначенные для графических построений:



initgraph(driver, mode, <путь к драйверу>) - задаёт графический режим. Путь к файлу-драйверу указывают (в апострофах), если его нет в каталоге, из которого запускается среда программирования;

detectgraph(<драйвер>, <режим>) - возвращает значения характеристик дисплея;

setcolor(<цвет>) - задаёт цвет будущего изображения;

setbkcolor(<цвет>) - задаёт цвет фона;

putpixel(x, у, <цвет>) - высвечивает точку (х, у) заданным цветом;

line(xl, yl, х2, у2) — рисует линию между двумя заданными точками;

lineto(х, у) — рисует линию от текущей точки до точки (х, у);

linerel(dx, dy) — рисует линию от текущей точки с заданными приращениями;

rectangle(xl, yl, x2, y2) - рисует прямоугольник с заданными координатами диагонально противоположных вершин (левой верхней и правой нижней);

setviewport(xl, yl, x2, y2, true) - задаёт координаты нового графического окна. Логическая постоянная true задаёт режим отсекания изображения, которое выходит за рамки окна;

bar(xl, yl, x2, y2) - рисует закрашенный прямоугольник;

bar3d(xl, yl, x2, y2, <объёмная глубина>, true) - рисует параллелепипед;

circle(х, у, R) - рисует окружность радиуса R с центром в точке (х,у);

arc(x, у, <начальный угол>, <конечный угол>, <радиус>) -рисует дугу;

pieslice(x, у, <начальный угол>, <конечный угол>, <радиус>) - рисует закрашенный сектор;

ellipse(х, у, <начальный угол>, <конечный угол>, <горизонт. радиус>, <вертик. радиус>) - рисует эллипс или дугу эллипса;

setfillstyle(<заполнение>, <цвет>) - задает способ заполнения замкнутой области в зависимости от значения параметра заполнения: 0 - заполнение цветом фона, 1 — сплошное заполнение, 2 - заполнение толстыми горизонтальными линиями, 3 - заполнение наклонными линиями, ..., 10 -заполнение точками, 11 - плотное заполнение точками;

floodfill(x, у, <цвет границы>) — заполняет замкнутую область, в которой находится точка (х, у);

closegraph- закрывает графический режим;

outtext(<текст>) - выводит заданный текст из текущей позиции;

outtextxy(x, у, <текст>) — выводит текст в заданном месте;

settextstyle(<шрифт>, <направление>, <размер>) - задаёт вид символов, направление вывода: 0 - горизонтально, 1 - вертикально, и размеры символов: 1, 2, 3.

Рассмотрим некоторые функции модуля Graph:

graphresult- возвращает код ошибки, если невозможно задать графический режим, и 0 — в случае задания;

getmaxx- возвращает значение размера экрана вдоль горизонтали;

getmaxy- возвращает значение размера экрана вдоль вертикали;

getcolor— возвращает значение текущего цвета;

getcolor(x,y)- возвращает значение цвета точки (х, у);

getx, gety - возвращают координаты текущего пикселя.

3. Цвета.Цвета задают числами или английскими названиями:

black=0 - черный;
blue=l - синий;
green=2 - зеленый;
cyan=3 - голубой;
red=4 - красный;
magenta=5 — фиолетовый;
brown=6 — коричневый;
lightgray=7 — светло-серый;
darkgray=8 — темно-серый;
lightblue=9 — ярко-синий;
lightgreen=10 — ярко-зеленый;
lightcyan=ll — ярко-голубой;
lightred=12 — ярко-красный;
lightmagenta= 13 — ярко-фиолетовый;
yellow=14 — жёлтый;
white=15 — белый.

 

Задача 1. Нарисовать разными цветами десять концентрических окружностей с общим центром посередине экрана, то есть в точке с графическими координатами (320; 240), и описать вокруг них красный прямоугольник.

programCirclelO;

usesCrt, Graph;

var driver, mode, r : integer;

Begin

clrscr;

driver := detect;

initgraph(driver, mode, ");

r := 10; {радиус первой окружности 10 пикселей]

whiler <= 100do

Begin

setcolor(r div 10);

circle(320, 240, r);

r := r + 10

end;

setcolor(red);

rectangle(220, 140, 420,340);

readln

End.

 

Задача 2.Нарисовать эмблему. В верхней левой части графического экрана на черном фоне нарисовать голубой квадрат, а в нем - черный круг, закрашенный желтым цветом. В центре эмблемы черными буквами написать слово «Киев».

programEmblema;

usesCrt, Graph;

vardriver, mode, i, xl, yl : integer;

x, у : real;

Begin

clrscr;

driver := detect;

imtgraph(driver, mode, ");

setbkcolor(0),

setcolor(3);

rectangl(100, 0, 300, 200);

setfillstyle(l, 3);

floodfill(200, 100, 3);

setcolor(14);

circle(200, 100, 100),

setfillstyle(l, 14);

floodfill(200, 100, 14);

setcolor(0);

circle(200, 100, 100);

settextstyle(0, 0, 3);

outtextxy(135, 100, 'Киев');

readln

End.

Задача З. Написать программу рисования графика функции у = 2sin(2x)+1 на отрезке [0; 2p], протабулировав функцию с шагом h=0,1. В результате экспериментов, изменяя значения амплитуды в пикселях (при помощи множителя М), добиться изображения графика на экране наилучшим образом.

programGrafikSm;

usesCrt, Graph;

consta = 0; b = 2 * pi;

h=0.1; h1 - 5;

xO = 60; yO = 240;

M = 50;

Vardriver, mode, xl, yl : integer;

x, у : leal;

functionf(x : real) : real;

Begin

f := 2 * sin(2 * x) + 1

end;

 

Begin

clrscr;

driver := detect;

mitgraph(driver, mode, ");

setcolor(14);

setbkcolor(l);

line(20, yO, 600, yO);

line(xO, 440, xO, 20); {Координатные оси}

x := a;

xl:- xO + trunc(M * x);

{x, у - математические координаты}

У := f(x);

yl := у0 - trunc(M * у);

{xl, yl - графические координаты}

moveto(xl, yl);

setcolor(15);

whilex <= bdo

Begin

У := f(x);

yl := yO - trunc(M * y);

lineto(xl, yl);

xl := xl + h1;

x := x + h

end;

settextstyle(0, 0, 1);

outtextxy(60, 245, '0');

outtextxy(360, 245, '6.3');

settextstyle(0, 0, 2);

outtextxy(200, 380, 'Выполнил Панчишин Ю.');

readln

End.

Задание 1-3. Решите задачи 24, 25 и 26 своего варианта.

4. Понятия об анимации.Чередование засвечиваний и гашений изображения используют для имитации движения этого изображения на экране. Перед очередным засвечиванием объект необходимо переместить в направлении его движения. Движение изображения на экране называют анимацией.

Для имитации движения объекта на экране нужно выполнить такой циклический алгоритм:

1. Нарисовать объект в нужной точке, сделать паузу.

2. Удалить объект, закрасив его цветом фона.

3. Изменить координаты объекта.

4. Возвратиться к пункту 1.

Задача 4. Изобразить движение солнца на голубом небе в горизонтальном направлении.

programMySun;

usesCrt, Graph;

vardriver, mode, i : integer;

Begin

clrscr;

driver :=- detect;

initgraph(driver, mode, ");

i:=0;

whilei <= 750do

Begin

setcolor(14);

setbkcolor(3);

setfillstyle(l, 14);

circle(i, 100, 50);

floodfill(i, 100, 14);

delay(200);

setfillstyle(l, 3);

setcolor (3);

circle(i, 100, 50);

floodfilld, 100, 3);

i := i + 5

end;

readln

End.

Задание 4. Придумать сюжет с анимацией и составить программу для его реализации.



<== предыдущая лекция | следующая лекция ==>
МНОЖЕСТВА | ОБЪЕКТЫ


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


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

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

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


 


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

 
 

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

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