Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций -=Вычислительная техника и прог...docx
Скачиваний:
11
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

5.1.4. Рисование простейших графических фигур

Графические примитивы — это геометрические фигуры, которые можно отобразить на экране с помощью специальных функций.

Ниже представлены функции графических примитивов. Они имеют тип void far:

line(int x1, int y1, int x2, int y2) — изображение отрезка прямой;

linerel(int dx, int dy) — изображение отрезка прямой относительно текущей позиции ;

lineto(int x, int y) — изображение отрезка прямой из текущей точки в точку с заданными координатами ;

circle(int x, int y, int radius) — изображение окружности ;

arc(int x, int y, int stangle, int endangle, int radius) — изображение дуги радиуса radius с координатами (x , y) от угла stangle до endangle ;

ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius) — изображение эллиптической дуги с аналогичными параметрами ;

rectangle(int x1, int y1, int x2, int y2) — изображение прямоугольника ;

rawpoly(int numpoints, int far *polypoints) — изображение ломанной, заданной набором координат некоторого множества точек .

В последней функции параметр numpoint — это количество точек ломанной. Параметр *polypoints указывает на массив, каждый элемент которого есть структура из двух полей, которые интерпретируются как координаты (x , y) очередной точки. Функцию drawpoly часто используют для вывода графиков функций, заданных таблично.

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

unsigned far getpixel (int x, int y) ;

void far putpixel (int x, int y, int color) ;

Первая функция возвращает номер цвета пикселя с координатами (x , y). Вторая выводит пиксель с координатами (x , y) цветом color.

Стилем и толщиной линий можно управлять с помощью функции

setlinestyle (int linestyle, unsigned upattern, int thickness) ;

Аргумент linestyle устанавливает стиль рисования линий, upattern — определяет пользовательский шаблон, а thickness — толщину линий. Доступные значения для толщины линий: NORM_WIDTH (нормальная) и THICK_WIDTH (толстая). При этом аргумент thickness воздействует на все контурные графические примитивы, а аргументы linestyle и upattern — только на кусочно-линейные. Стиль рисования линий задается константами перечислимого типа:

enum line_styles

{

SOLID_LINE =0, // сплошная линия

DOTTED_LINE =1, // точечная

CENTER_LINE =2, // штрихпунктирная

DASHED_LINE =3, // пунктирная

USER_BIN =4 // пользовательский стиль

}

При выборе значений указанных констант от 0 до 3 параметр upattern в функции setlinestyle игнорируется. Шаблон upattern используется, если значение linestyle равно 4. Он представляет собой 16-битовое слово. Если бит шаблона равен 1, то соответствующий пиксель шаблона рисуется, в противном случае — нет. Так, пунктирная линия задается шаблоном 0x0F0F или 0x3333.

5.1.5. Отображение текстовой информации в графическом режиме

Текст в графическом режиме выводится с помощью шрифтов, которые сохраняются в файлах с расширением chr. Параметры вывода текста определяются функцией

settextstyle (int font, int direction, int charsize) ;

Аргумент direction задает направление вывода текста (HORIZ_DIR, VERT_DIR), аргумент charsize — размер символов (от 1 до 10). Вид шрифта определяется значением аргумента font (от 0 до 4). Все шрифты, кроме шрифта DEFAULT_FONT=0, являются векторными. Т.е. их элементы формируются как совокупность векторов, которые характеризуются направлением и длиной.

Расположением выводимой строки текста относительно опорной точки управляет функция

settextjustify(int horiz, int vert) ;

Её аргументы принимают значения перечислимого типа:

enum text_just

{

LEFT_TEXT =0, // расположить слева

CENTER_TEXT, // расположить по центру

RIGHT_TEXT, // расположить справа

BOTTOM_TEXT // расположить внизу

TOP_TEXT // расположить вверху

}

Вывод текста выполняется фукциями

outtext (char far *textstring) ;

outtextxy (int x, int y, char far *textstring) ;

Обе функции в качестве аргумента получают указатель textstring на выводимую строку символов. За одно обращение к функции выводится одна строка. Первая функция выводит текст в текущую графическую позицию, вторая — в точку, заданную с помощью аргументов x и y.

5.1.6. Построение графиков функций

График функции строят по точкам . Для этого циклически задают значение абсциссы и вычисляют соответствующие ординаты . Затем отрезками соединяют точки с точками .

Для изображения графика следует перевести вычисленные математические координаты точек в их экранные эквиваленты, умножив координаты на масштаб. С учетом того, что центр системы координат — это центр экрана, а экранная ось ординат направлена в обратную сторону по сравнению с математической осью, получим следующие выражения для экранных координат:

При построении графиков функций приведенные формулы используют в следующем порядке:

— циклически изменяют значение x_экрана от 0 до значения, равного максимальному числу пикселей в строке;

— для заданного значения x_экрана вычисляют математическую координату x по формуле

— вычисляют y_экрана по указанной выше формуле и получают экранную точку с координатами (x_экрана , y_экрана);

— полученные экранные точки соединяют отрезками и получают график функции.