
- •Лекция 1. Понятие алгоритма. Свойства алгоритма
- •Лекция 2. Способы описания алгоритмов
- •Лекция 3. Типовые алгоритмы программ
- •Лекция 4. Принципы разработки схем алгоритмов программ
- •Лекция 5. Эволюция языков программирования Классификация языков программирования. Понятие системы программирования.
- •Лекция 6.
- •Структура программы. Назначение функции main. Объявление функции main. Назначение заголовочных файлов
- •Лекция 7. Переменные и данные. Основные типы данных. Объявление переменных. Инструкции присваивания
- •Лекция 8. Функции ввода-вывода Форматированный вывод на экран
- •Лекция 9. Стандартные математические функции
- •Лекция 10. Алгоритм и программы линейной структуры
- •Лекция 11.
- •Лекция 12. Ветвления
- •If (выражение) оператор;
- •Лекция 13. Оператор выбора (переключатель).
- •Циклы Лекция 14.
- •Лекция 15.
- •Массивы Лекция 16.
- •Лекция 17. Сортировка массивов.
- •Лекция 18. Многомерные массив.
- •Лекция 19. Указатели и ссылки.
- •Лекция 20. Указатели и массивы.
- •Лекция 21. Символы и символьные строки
- •Лекция 22. Графика
- •Лекция 23. Использование функций графических примитивов, работы с текстом в графическом режиме.
- •Функции Лекция 24.
- •Лекция 25. Прототип функции.
- •Лекция 26. Передача значений через глобальные переменные.
- •Лекция 29. Объединение.
- •Лекция 30 Файлы
- •Лекция 31. Работа с файлами на диске.
Лекция 22. Графика
Приступая к изучению этого раздела, следует помнить, что:
в графическом режиме экран представляет собой совокупность точек, каждая из которых может быть окрашена в один из 16-ти цветов;
координаты точек возрастают слева направо и сверху вниз. Левая верхняя точка имеет координаты (0,0), правая нижняя — (639,479);
для того чтобы программа могла выводить на экран графические примитивы (линии, окружности, прямоугольники), необходимо инициализировать графический режим.
Шаблон графической программы выглядит следующим образом:
// шаблон графической программы
#include <graphics.h>
#include <conio.h>
#define PATHTODRIVER "c:\\borlandc\\bgi\\"
void main(void)
{
int gdriver = DETECT; // драйвер int gmode; // режим
int errorcode; // код ошибки
initgraph(&gdriver,&gmode, PATHTODRIVER);
errorcode = graphresult();
if (errorcode !=grOk) // ошибка инициализации
// графического режима {printf("Ошибка: %d\n", errorcode);
puts("Для завершения программы нажмите <Enter>");
getch();
return; }
// далее инструкции программы
closegraph(); // завершение графического режима
Лекция 23. Использование функций графических примитивов, работы с текстом в графическом режиме.
arc
Синтаксис:
аrc (int x, int y, int УголНачала, int УголКонца, int радиус);
Вычерчивает дугу с центром в точке с координатами (х, у). Параметры УголНачала и УголКонца задают круговые координаты начальной и конечной точек линии дуги, которая вычерчивается против часовой стрелки от начальной точки к конечной. Угловые координаты задаются в градусах. Значение угловой координаты возрастает против часовой стрелки. Параметр Радиус задает радиус дуги.
bar
Синтаксис:
bar(int xl, int yl, int x2, int у2) ;
Вычерчивает закрашенный прямоугольник. Параметры xl и yl задают положение левого верхнего угла прямоугольника, х2 и у2 — правого нижнего. Цвет и стиль заливки прямоугольника задаются функцией
setfillstyle.
bar3d
Синтаксис:
bar3d(int xl,int yl, int x2, int y2, int Глубина, int в_Грань);
Вычерчивает параллелепипед. Параметры xl и yl задают положение левого верхнего, а х2 и у2 —
правого нижнего угла ближней грани параллелепипеда. Параметр Глубина задает расстояние
между передней и задней гранями, параметр в_Гранъ определяет, нужно ли вычерчивать границу
верхней грани. Если параметр в_Гранъ равен нулю, то линия границы верхней грани не
вычерчивается. Цвет и стиль закраски ближней грани параллелепипеда можно задать при помощи функции setfillstyle, цвет линий границы — при помощи функции setcolor.
circle
Синтаксис:
circle(int x, int у, int r)
Вычерчивает окружность радиуса г с центром в точке с координатами (х, у). Цвет окружности можно задать при помощи функции setcolor.
ellipse
Синтаксис:
ellipse(int х, int у, int УголНачала, int УголКонца, int РадиусХ, int РадиусУ) ;
Вычерчивает эллипс или дугу эллипса с центром в точке с координатами (х, у). Параметры УголНачала и УголКонца задают круговые координаты начальной и конечной точек линии эллипса, которая вычерчивается против часовой стрелки от начальной точки к конечной. Угловые координаты задаются в градусах. Значение угловой координаты возрастает против часовой стрелки. Параметры РадиусХ и РадиусУ задают горизонтальный и вертикальный радиусы эллипса.
Линия эллипса или дуги вычерчивается цветом, установленным функцией setcolor.
getx, gety
Синтаксис:
int getx(void);
int gety(void);
Возвращает координату х (у) указателя вывода.
line
Синтаксис:
line(int xl, int yl, int x2, int y2);
Вычерчивает линию из точки с координатами xl, yl в точку с координатами х2, у2.
Цвет линии можно задать при помощи функции setcolor, стиль — при помощи функции setlinestyle.
lineto
Синтаксис:
lineto(int x, int y);
Вычерчивает линию от текущего положения указателя вывода до точки, координаты которой указаны при вызове. Линия вычерчивается стилем, установленным функцией setlinestyle. Цвет линии можно задать, вызвав функцию setcolor.
linerel
Синтаксис:
linerel(int dx, int dy);
Вычерчивает линию из точки текущего положения указателя вывода (xt,yt) в точку с координатами (xt+dx, yt+dy), т. е. координаты конца линии задаются в приращениях относительно текущих координат указателя вывода. Линия вычерчивается стилем, который устанавливается функцией setlinestyle. Цвет линии можно задать, вызвав функцию setcolor.
moveto
Синтаксис:
moveto(int x, int y);
Перемещает указатель вывода в точку с указанными координатам
moverel
Синтаксис:
moverel(int dx, int dy);
Перемещает указатель вывода на dx и dy пикселов. Если значение параметра dx (dy) положительное, то указатель перемещается вниз (влево), если отрицательное, то — вверх (вправо).
outtext
Синтаксис:
outtext(const char* Текст) ;
Выводит строку символов Текст от текущего положения указателя вывода и перемещает указатель вывода в точку, расположенную за последним выведенным символом.
outtextxy
Синтаксис:
outtextxy(int x, int y, const char* Текст);
Устанавливает указатель вывода в точку с координатами (х, у) и выводит от нее строку Текст, при этом указатель вывода своего положения не меняет, т. е. остается в точке с координатами (х, у). Цвет выводимых символов можно задать при помощи функции setcolor, шрифт — settextstyle.
putpixel
Синтаксис:
putpixel(int x, int y, int Цвет) ;
Окрашивает пиксел, точку с координатами (х, у), цветом Цвет. В качестве параметра Цвет обычно используют именованную константу (см. setcolor).
rectangle
Синтаксис:
rectangle(int xl, int yl, int x2, int y2);
Вычерчивает прямоугольник. Параметры xl и yl задают положение левого верхнего угла прямоугольника, х2 иу2 — правого нижнего.
Вид (стиль линии) контура прямоугольника можно задать при помощи функции setlinestyle, цвет
— при помощи функции setcolor.
sector
Синтаксис:
sector (int x, int y, int Угол1, int Угол2, int РадиусХ, int РадиусУ) ;
Вычерчивает эллиптический (РадиусХ, РадиусУ) или круговой (РадиусХ = РадиусУ) сектор. Параметры х и у задают координаты центра сектора. Параметры Угол! и Угол2 — углы прямых, ограничивающих сектор, параметры РадиусХ и РадиусУ — радиусы эллипса по осям X и г, из которого "вырезается" сектор. Нулевому углу соответствует горизонтальный отрезок, проведенный из точки (х, у) в сторону возрастания координаты к. Если Угол1=0, а Угол2=360, то функция sector вычерчивает полный круг (эллипс).
setfillstyle
Синтаксис:
setfillstyle(int Стиль, int Цвет);
Устанавливает стиль и цвет заливки (закрашивания), используемый функциями вывода областей (bar, bar 3d, sector и др.) В качестве параметра Стиль обычно используют константы, список которых приведен ниже, также задается именованной константой
К
онстанта Стиль
заполнения области
e
mptyfill Без
заливки (сплошная заливка)
solid_fill Сплошная заливка текущим цветом
line_fill Горизонтальная штриховка
ltslash_fill Штриховка под углом 45 градусов влево тонкими
линиями
slash_fill Штриховка под углом 45 градусов влево
bkslash_fill Штриховка под углом 45 градусов вправо тонкими линиями
ltbkslash_fill Штриховка под углом 45 градусов вправо hatch_fill Штриховка клеткой
xhatch_fill Штриховка под углом 45 градусов редкой косой клеткой
interleave_fill Штриховка под углом 45
градусов частой косой клеткой
widedot_fill Заполнение редкими точками
closedot_fill Заполнение частыми точками user fill Тип заполнения определяется программистом
З
аголовочный
файл для всех функций: <graphics.
h>
Рассмотрим задачу:
Написать программу, которая выводит на экран флаг Олимпийских игр. Изображение флага приведено ниже (одной клетке соответствует пять пикселов).
// Рисует олимпийский флаг
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define PATHTODRIVER "с:\\borlandc\\bgi\\"
void main (void)
{
int gdriver = DETECT; // драйвер
int gmode; // режим
int errorcode; // код ошибки
initgraph(&gdriver, &gmode, PATHTODRIVER); errorcode = graphresult();
if (errorcode != grOk) // ошибка инициализации
// графического режима
{
printf ("Ошибка: %d\n", errorcode);
puts("Для завершения программы нажмите <Enter>");
getch();
exit(l); }
// полотнище флага - сплошная заливка серым цветом
setfillstyle(SOLID_FILL,LIGHTGRAY);
bar(80,80,200,135);
// кольца
setcolor(GREEN); // зеленое
circle(100,100,15);
setcolor(BLACK); // черное
circle(140,100,15);
setcolor(RED); // красное
circle(180,100,15);
setcolor(YELLOW); // желтое
circle(120,115; 15);
setcolor(BLUE); // синее
circle(160,115,15);
getchO;
closegraph(); // выход из графического режима }