Управление графической системой — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Управление графической системой

2022-10-27 36
Управление графической системой 0.00 из 5.00 0 оценок
Заказать работу

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

Функция Назначение функции
closegraph() Закрывает графический режим
detectgraph() Проверяет аппаратное обеспечение и определяет, какие графические драйверы использовать, рекомендует предпочтительный режим
getgraphmode() Возвращает текущий графический режим
initgraph() Инициализирует графическую систему и переводит аппаратное обеспечение в графический режим
setgraphmode() Выбирает заданный графический режим, очищает экран и восстанавливает все умолчания

Для запуска графической системы необходимо прежде всего вызвать функцию initgraph(). Эта функция загружает графический драйвер и переводит систему в графический режим. Можно указать initgraph() использование конкретного графического драйвера и конкретный режим, либо задать автодетектирование установленного видео адаптера и выбор соответственного драйвера уже во время выполнения. Если задано в initgraph() автодетектирование, то она сама вызовет функцию detectgraph() для выбора графического драйвера и режима.

Для завершения работы в графике, необходимо вызвать функцию closegraph() для того, чтобы закрыть графическую режим.

 

Черчение и заполнение

Черчение выполняют следующие функции:

 Функция Назначение функции
аrc() Чертит дугу окружности
circle() Чертит окружность
drawpoly() Чертит контур многоугольника
ellipse() Чертит эллиптическую дугу
line() Чертит линию из (x0,y0) в (x1,y1)
lineto() Чертит линию из текущей позиции (CP) в (x,y)
moveto() Перемещает текущую позицию (CP) в (x,y)
rectangle() Рисует прямоугольник
setlinestyle() Устанавливает ширину и стиль текущей линии

 

Заполнение выполняют следующие функции:

Функция Назначение функции
bar() Чертит и заполняет столбик
bar3d() Чертит и заполняет трехмерный столбик
fillellipse() Чертит и заполняет эллипс
fillpoly() Чертит и заполняет многоугольник
pieslice() Чертит и заполняет сектор окружности
sector() Чертит и заполняет эллиптический сектор
setfillpattern() Выбирает шаблон заполнения, определяемый пользователем
setfillstyle() Устанавливает шаблон и цвет заполнения

 

Управление цветом

Функции получения информации о цвете:

Функция Назначение функции
getbcolor() Возврашает текущий цвет фона
getcolor() Возвращает текущий цвет вычерчивания
getmaxcolor() Возвращает максимальное значение цвета, доступное в текущем графическом режиме

 

Функции установки одного или более цветов:

Функция Назначение функции
setbkcolor() Устанавливает текущий цвет фона
setcolor() Устанавливает текущий цвет вычерчивания

 

Обработка ошибок в графическом режиме

Функция Назначение функции
grapherrormsg() Возвращает строку с сообщением об ошибке для заданного кода ошибки
graphresult() Возвращает код ошибки для последней графической операции, в которой встретилась ошибка

 

Функции запроса состояния

 

Функция Назначение функции
getdrivername() Возвращает имя текущего графического драйвера
getgraphmode() Возвращает текущий графический режим
getlinesettings() Возвращает текущие стиль, шаблон и толщину линии
getmaxx() Возвращает текущее разрешение по оси x
getmaxy() Возвращает текущее разрешение по оси y
getpixel() Возвращает цвет пикселя в (x,y)
getx() Возвращает координату x текущей позиции (CP)
gety() Возвращает координату y текущей позиции (CP)

 

Пример. Окружность радиусом 100 пикселей перемещается от левого края экрана к правому с шагом 10 пикселей, изменяя при этом цвет случайным образом.

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <dos.h>

void main()

{

/* описание переменных для графического режима с автоопределением параметров */

int graphdriver = DETECT, gmode, errorcode;

int x, maxx, midy, color;

int radius = 100;

/* инициализация графики и локальных переменных */

initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */

errorcode = graphresult();

if(errorcode!= grOk) /* если ошибка */

{

printf("Ошибка: %s\n", grapherrormessage(errorcode));

printf("Для останова нажмите любую клавишу\n");

getch();  

exit(1); /* завершение с кодом ошибки */

}

midy = getmaxy() / 2; /* определение середины экрана по вертикали */

maxx = getmaxx();  /* определение количества пикселей по горизонтали */

for (x= radius; x <= maxx - radius; x+=10)

{

color = random(getmaxcolor()); /* задание случайного значения цвета */

setcolor(color);

/* рисование окружности */

circle(x, midy, radius);

delay(700); /* Задержка выполнения программы на 0,7 сек. */

}

closegraph(); /* закрытие графического режима */

}

Пример использования графических функций приведен в приложении Г (пример №8).

Директивы препроцессора

 

Директивы препроцессора представляют собой инструкции, записанные в тексте программы на С, и выполняемые до трансляции программы. Директивы препроцессора позволяют изменить текст программы, например, заменить некоторые лексемы в тексте, вставить текст из другого файла, запретить трансляцию части текста и т.п. Все директивы препроцессора начинаются со знака #. После директив препроцессора точка с запятой не ставятся.

 

Директива # include

Директива #include включает в текст программы содержимое указанного файла. Эта директива имеет две формы:

         #include "имя файла"         #include <имя файла>

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

Директива #include может быть вложенной, т.е. во включаемом файле тоже может содержаться директива #include, которая замещается после включения файла, содержащего эту директиву.

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

Наиболее часто используемые в программах директивы #include следующие:

# include <stdio.h> /* Включение файла с описанием функций ввода-вывода */

# include <math.h> /* Включение файла с описанием математических функций */

# include <conio.h> /* Включение файла с описанием функций управления консолью*/

 

Директива #define

Директива #define служит для замены часто использующихся констант, ключевых слов, операторов или выражений некоторыми идентификаторами. Идентификаторы, заменяющие текстовые или числовые константы, называют именованными константами. Идентификаторы, заменяющие фрагменты программ, называют макроопределениями, причем макроопределения могут иметь аргументы.

Директива #define имеет две синтаксические формы:

     #define идентификатор текст      #define идентификатор (список параметров) текст

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

Пример:

    #define WIDTH 80     #define LENGTH (WIDTH+10)

Эти директивы изменят в тексте программы каждое слово WIDTH на число 80, а каждое слово LENGTH на выражение (80+10) вместе с окружающими его скобками.

Скобки, содержащиеся в макроопределении, позволяют избежать недоразумений, связанных с порядком вычисления операций. Например, при отсутствии скобок выражение t=LENGTH*7 будет преобразовано в выражение t=80+10*7, а не в выражение t=(80+10)*7, как это получается при наличии скобок, и в результате получится 150, а не 630.

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

При макровызове вслед за идентификатором записывается список фактических аргументов, количество которых должно совпадать с количеством формальных параметров.

Пример: #define MAX(x,y) ((x)>(y))?(x):(y) Эта директива заменит фрагмент            t=MAX(i,s[i]); на фрагмент            t=((i)>(s[i])?(i):(s[i]);

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

     Например, при наличии скобок фрагмент            t=MAX(i&j,s[i]||j);будет заменен на фрагмент           t=((i&j)>(s[i]||j)?(i&j):(s[i]||j);а при отсутствии скобок - на фрагмент           t=(i&j>s[i]||j)?i&j:s[i]||j;в котором условное выражение вычисляется в совершенно другом порядке.

 

Директива #undef

Директива #undef используется для отмены действия директивы #define. Синтаксис этой директивы следующий #undef идентификатор

Директива отменяет действие текущего определения #define для указанного идентификатора. Не является ошибкой использование директивы #undef для идентификатора, который не был определен директивой #define.

Пример:

     #undef WIDTH     #undef MAX

Эти директивы отменяют определение именованной константы WIDTH и макроопределения MAX.

 

 


Поделиться с друзьями:

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.029 с.