Программирование графики. Основы


Современные программы позволяют работать не только с текстовыми или числовыми данными, но и с отдельными точками на экране монитора. Они могут построить по этим точкам различные диаграммы, выводить на экран фотографии, создавать 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);

Для рисования прямоугольника используйте команды:
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 – точечные узоры

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

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