Модуль: Программирование графики. Основы


Примитивы - 1: точки, отрезки и ломанные

Современные программы позволяют работать не только с тектовыми или числовыми данными, но и с успехом работают с отдельными точками на экране монитора, могут построить по этим точкам различные диаграммы, могут выводить на экран фотографии, создавать 3D изображения.

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

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

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

Система координат

Поле для рисования в графических программах называется холстом (англ. canvas) - прямоугольник, состоящий из отдельных пикселей. Каждый пиксель имеет две координаты (x, y)

Размер холста совпадает с размером графического экрана. Если рисовать что-то за пределами холста, эта часть рисунка будет потеряна.
В курсе размер графического окна 500х500 пикселей. 

Простейшие графические примитивы

Прежде чем что-то рисовать необходимо установить цвет, которым будете рисовать или выводить текст
цвет линий и текста: set color = установить цвет  
setcolor(12);
или так
setcolor(COLOR(250,0,0));

Как задать цвет?

Способ 1:

Цвет задается числом от 0 до 15
0 черный
1 синий
2 зеленый
3 голубой(бирюзовый)
4 красный
5 фиолетовый
6 коричневый
7 светло-серый
8 темно-серый
9 светло-синий
10 светло-зеленый
11 светло-бирюзовый
12 светло-красный
13 розовый
14 желтый
15 белый

Способ 2:
Кроме того, можно использовать полную палитру цветов (режим True Color, истинный цвет). В этом случае цвет строится из трех составляющих: красной (R) , зеленой (G) и синей (B). Каждая из этих составляющих – целое число от 0 до 255 (256 вариантов), таким образом, всего получается
2563 = 16 777 216 цветов. Цвета строятся с помощью функции COLOR(R, G, B), у нее в скобках перечисляются через запятую значения составляющих R , G и B (именно в таком порядке).
Например:
COLOR(0,0,0) черный
COLOR(255, 0, 0) красный
COLOR(0, 255, 0) зеленый
COLOR(0, 0, 255) синий
COLOR(255, 255, 255) белый
COLOR(100, 100, 100) серый
COLOR(255, 0, 255) фиолетовый
COLOR(0, 255, 0) желтый


Установка точки с координатами (x,y) и выбранным цветом выполняется командой
putpixel(x,y,color);

Линия от точки (x1, y1) до точки (x2, y2)
line(x1, y1, x2, y2);

Нарисовать ломанную линию можно используя несколько команд
lineto(x, y);
Данная команда рисует линию от текущей точки до точки с координатами (x, y)
Текущая точка - это точка, в которой закончилось рисование предыдещей команды
В самом начале текущая точка имеет координаты (0, 0)
Сделать точку с координатой (x, y) текущей можно с помощью команды 
moveto(x, y);

Примитивы - 2: прямоугольник

Для рисования прямоугольника используйте команды:
rectangle (x1, y1, x2, y2);

Закрашенный прямоугольник. Чтобы нарисовать закрашенный треугольник необходимо:
1. Задать стиль и цвет заливки
2. Команда bar(x1, y1, x2, y2); рисует закрашенный прямоугольник, у которого стиль и цвет установлены командой setfillstyle (style, color);

setfillstyle (style, color);
bar (x1, y1, x2, y2);
Стили заливки:
0 – отключить заливку
1 – сплошная заливка
3,4,5,6 – наклонные линии
7,8 – сетка
9,10,11 – точечные узоры

Задача для тренировки:

Примитивы - 2: прямоугольник

Окружность

Для того, чтобы нарисовать необходимо выполнить команду
circle ( x, y, R );
Окружность будет нарисована с центром в точке с координатами (x,y) и радиусом R

Задача для тренировки:

Окружность

Заливка цветом

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

Задача для тренировки:

Заливка цветом