Целью работы является изучение основ работы с графическими процедурами и функциями языка Turbo Pascal.
2. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Модуль Graph представляет собой библиотеку из более чем 50 графических процедур и функций. В модуле поддерживаются несколько типов линий и стилей заполнения, существует несколько типов шрифтов, которые можно увеличивать, выравнивать и ориентировать вертикально или горизонтально. Для того чтобы выполнить программу, которая использует модуль Graph, необходимо иметь доступ к одному или более графических драйверов (файлы с расширением BGI), файлам TURBO.TPL, GRAPH.TPU и к файлам шрифтов с расширением CHR. Каждый драйвер содержит код и данные, хранящиеся в отдельном файле.
Во время выполнения, процедура InitGraph определяет графическое устройство, загружает и инициализирует соответствующий графический драйвер, переводит систему в графический режим и возвращает управление вызывающей программе.
Процедура Close Graph выгружает драйвер из памяти и восстанавливает предыдущий видеорежим.
Graph построение графиков
Рассмотрим используемую в графическом режиме координатную систему.
Верхний левый угол графического экрана определен как (0,0). Значение Х или колонки увеличиваются направо. Значение Y или строки увеличиваются вниз. Так в режиме 640×480 на адаптере CGA экранные координаты каждого из четырех углов и точка в центре экрана будут представлены:
Для вывода графической информации в заданную позицию в Turbo Pascal
используется текущий указатель (CP — Current Pointer). CP подобен курсору в
текстовом режиме, но в отличие от курсора CP не виден. Следующие процедуры
перемещают CP: InitGraph, MoveTo, MoveRel, LineTo, LineRel, OutText,
SetGraphMode, GraphDefaults, ClearDevice, SetViewPort, ClearViewPort.
Причем последние 5 команд перемещают CP в позицию (0,0).
Графический модуль Turbo Pascal позволяет использовать большое число
процедур для рисования различных геометрических фигур: точек, линий,
окружностей, дуг, эллипсов, прямоугольников, многоугольников и т.д. Все
графические процедуры и функции с кратким описанием приведены ниже.
Процедуры модуля Graph | |
Arc | Рисует дугу от начального угла к конечному, используя (X,Y) как центр |
Bar | Рисует полосу, используя текущий стиль и цвет. |
Bar3D | Рисует 3-х мерную полосу, используя текущий стиль и цвет. |
Circle | Рисует окружность, используя (X,Y) как центр. |
ClearDevice | Очищает экран и устанавливает текущий указатель (CP) в начало. |
ClearViewPort | Очищает окно. |
CloseGraph | Закрывает графическую систему. |
DetectGraph | Проверяет аппаратуру и определяет какой графический драйвер и в каком режиме используется. |
DrawPoly | Рисует многоугольник текущим цветом и типом линии. |
Ellipse | Рисует эллиптическую дугу от начального угла к конечному, используя (X,Y) как центр. |
FillEllipse | Рисует заполненный эллипс, используя (X,Y) как центр и XRadius и YRadius как горизонтальные и вертикальные оси. |
FillPoly | Заполняет многоугольник, используя сканирование. |
FloodFill | Заполняет ограниченную область, используя текущий шаблон и цвет заполнения. |
GetArcCoords | Позволяет запросить координаты команды Arc. |
GetAspectRatio | Возвращает разрешение экрана из которого может быть вычислен относительный аспект (Xasp/Yasp). |
GetFillPattern | Возвращает шаблон заполнения, установленный последним вызовом SetFillPattern. |
GetFillSettings | Позволяет запросить текущий шаблон и цвет, установленные SetFillStyle или SetFillPattern. |
GetImage | Сохраняет битовый образ указанной части экрана в буфере. |
GetLineSettings | Возвращает текущие стиль, шаблон и толщину линии, установленные SetLineStyle. |
GetModeRange | Возвращает минимальный и максимальный графические режимы для данного драйвера. |
GetPalette | Возвращает текущую палитру и ее размер. |
GetTextSettings | Возвращает текущий шрифт, направление, размер и выравнивание текста, установленные SetTextStyle и SetTextJustify. |
GetViewSettings | Позволяет запросить текущие параметры окна и отсечения. |
GraphDefaults | Устанавливает текущий указатель (CP) в начало и переустанавливает графическую систему. |
InitGraph | Инициализирует графическую систему и устанавливает устройство в графический режим. |
Line | Рисует линию от (X1,Y1) к (X2,Y2). |
LineRel | Рисует линию от текущего указателя (CP) к точке, лежащей на заданном растоянии. |
LineTo | Рисует линию от текущего указателя к (X,Y). |
MoveRel | Передвигает текущий указатель (CP) на заданное расстояние от его текущей позиции. |
MoveTo | Передвигает текущий указатель (CP) в (X,Y). |
OutText | Выводит текст на экран от текущего указателя. |
OutTextXY | Выводит текст на экран. |
PieSlice | Рисует и заполняет сектор, используя (X,Y) как центр и рисуя от начального угла к конечному. |
PutImage | Выводит битовый образ на экран. |
PutPixel | Рисует точку (пиксел) в (X,Y). |
Rectangle | Рисует прямоугольник, используя текущий цвет и тип линии. |
RestoreCRTMode | Восстанавливает видеорежим, который был до инициализации графики. |
Sector | Рисует и заполняет сектор эллипса. |
SetActivePage | Устанавливает активную страницу для графического вывода. |
SetAllPalette | Изменяет цвет палитры. |
SetAspectRatio | Изменяет значение относительного аспекта. |
SetBkColor | Устанавливает цвет фона. |
SetColor | Устанавливает основной цвет, которым будет осуществляться рисование. |
SetFillPattern | Выбирает шаблон заполнения, определенный пользователем. |
SetFillStyle | Устанавливает шаблон заполнения и цвет. |
SetGraphBufSize | Позволяет изменить размер буфера для функций заполнения. |
SetGraphMode | Переводит систему в графический режим и очищает экран. |
SetLineStyle | Устанавливает текущие толщину и стиль линии. |
SetPalette | Изменяет один цвет палитры, указанный через ColorNum и Color. |
SetRGBPallete | Позволяет модифицизовать палитру для IBM 8514 и VGA. |
SetTextJustify | Устанавливает выравнивание текста, используемое OutText и OutTextXY. |
SetTextStyle | Устанавливает текущий шрифт, стиль и размер текста. |
SetUserCharSize | Позволяет изменить ширину и высоту символа для штрихового шрифта. |
SetViewPort | Устанавливает текущее окно для графического вывода. |
SetVisualPage | Устанавливает номер видимой графической страницы. |
SetWriteMode | Устанавливает режим вывода (копирование или XOR) для линий, рисуемых с DrawPoly, Line, LineRel, LineTo, Rectangle. |
Функции модуля Graph. | |
GetBkColor | Возвращает текущий фоновый цвет. |
GetColor | Возвращает текущий цвет. |
GetDefaultPalette | Возвращает аппаратную палитру в записи PaletteType. |
GetDriverName | Вoзвращает строку с именем текущего драйвера. |
GetGraphMode | Возвращает текущий графический режим. |
SetMaxColor | Возвращает максимальный цвет, который можно задать в SetColor. |
GetMaxMode | Возвращает номер максимального режима текущего загруженного драйвера. |
GetMaxX | Возврашает максимальный Х (разрешение по горизонтали) для текущего графического драйвера и режима. |
GetMaxY | Возвращает максимальный Y (разрешение по вертикали) для текущего графического драйвера и режима. |
GetModeName | Возвращает строку с именем указанного графического режима. |
GetPaletteSize | Возвращает размер таблицы палитры. |
GetPixel | Возвращает цвет точки в (X,Y). |
GetX | Возвращает координату X текущей позиции (CP). |
GetY | Возвращает координату Y текущей позиции (СР). |
GraphErrorMsg | Возвращает строку сообщения об ошибке для заданного кода ErrorCode. |
GraphResult | Возвращает код ошибки для последней графической операции. |
ImageSize | Возвращает число байт, требуемое для заполнения прямоугольной области экрана. |
InstallUserDriver | Устанавливает пользовательский драйвер устройства в BGI таблицу драйверов устройств. |
InstallUserFont | Устанавливает новый шрифт, который не встроен в BGI систему. |
RegisterBGIdriver | Регистрирует драйвер BGI для графической системы. |
RegisterBGIfont | Регистрирует шрифт BGI для графической системы. |
TextHeight | Возвращает высоту строки в пикселах. |
TextWidth | Возвращает ширину строки в пикселах. |
Excel график функции
Источник: poisk-ru.ru
3 БАЗОВЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ GRAPH
Чтобы строить изображение, необходимо указывать, по крайней мере, точку начала вывода. В текстовых режимах эту точку указывает курсор, который присутствует на экране, если его искусственно не убрать. В графических режимах видимого курсора нет, но есть невидимый текущий указатель СР (Current Pointer). Фактически это тот же курсор, но он невидим.
11 В текстовых режимах курсор перемещается процедурой GoToXY и другими, в графических режимах для перемещения СР также имеется ряд процедур и функций. В первую очередь, это MoveTo и MoveRel. MoveTo(X,Y:integer) перемещает текущий указатель в точку с координатами X,Y. Например, процедура MoveTo(200,100); переместит СР в точку экрана с координатами 200,100.
MoveRel(dX,dY:integer) перемещает СР на dX точек по горизонтали и на dY точек по вертикали. Так, процедура MoveRel(5,10); переместит СР из точки с координатами 200,100 в точку 205,110. В ряде программ выполняется постоянный контроль местоположения текущего указателя. Для этого используются функции GetX и GetY , которые возвращают соответственно значение Х- и Y-координаты СР.
Например: var Xpos, Ypos: integer; . . . Xpos := GetX; Ypos := GetY; . . . В процессе управления СР может возникнуть ситуация, когда его координаты выйдут за допустимые пределы. Для борьбы с такими ситуациями используются функции GetMaxX:integer и GetMaxY:integer , которые возвращают соответственно максимально возможные для установленного режима значения Х- и Y-координат. Например: X := 6000/10; Y := 2000/2; if ((X > GetMaxX) OR (Y > GetMaxY)) then begin Write(‘Нарушение диапазона!’); MarginHadling <Пользовательская процедура обработки ошибок>end; MoveTo(I,J); В графических программах довольно часто приходится определять координаты центра экрана по горизонтали и вертикали. Это делается очень просто: Xcenter := GetMaxX DIV 2; Ycenter := GetMaxY DIV 2; PutPixel(Xcenter,Ycenter,LightGreen); Такой способ избавляет вас от настройки на конкретный тип монитора и расширяет область применения программы.
3.3 Экран и окно в графическом режиме
По аналогии с текстовыми режимами графический экран может рассматриваться как одно большое или несколько меньших по размеру окон. После установки окна вся остальная площадь экрана как бы не существует и весь ввод – вывод осуществляется только через окно. В каждый отдельный момент может
12 быть активно только одно окно. Если окон несколько, за переключение ввода— вывода в нужное окно отвечает программист. По умолчанию окно занимает весь экран, значения координат его левого верхнего и правого нижнего угла устанавливаются автоматически процедурой инициализации InitGraph.
Например, следующий фрагмент установит окно, равное полному графическому экрану 640×350: DriverVar := VGA; ModeVar := VGAMed; InitGraph(DriverVar,ModeVar, »); Чтобы стереть все изображения на экране, т.е. очистить его, используется не имеющая параметров процедура ClearDevice . С момента ее выполнения все установки по цвету, фону и окнам аннулируются и указатель СР помещается в точку с координатами (0,0). Если требуется создать окно, следует воспользо- ваться процедурой SetViewPort(xl,yl,x2,y2:integer; Clip:boolean); где xl, yl — координаты левого верхнего угла, х2, у2 — координаты правого нижнего угла окна.
Параметр Clip определяет, будет рисунок отсекаться при выходе за границы окна (Clip:= True) или нет (Clip:= False). После создания окна за точку отсчета принимается верхний левый угол окна, имеющий координаты (0,0). Для очистки окна используется процедура ClearViewPort . После ее выполнения все изображения в окне стираются, и указатель СР устанавливается в левую верхнюю точку окна с координатами (0,0).
Напомним, что это внутренние координаты окна, а не полного экрана. Координатную систему полного экрана можно восстановить, в частности, с помощью ClearDevice или задав в процедуре установки окна максимально возможные значения: SetViewPort (0,0, GetMaxX, GetMaxY, True) ; Атрибуты текущего окна можно получить с помощью процедуры GetViewSettings(var Vp : ViewPortType). Необходимо помнить, что в отличие от текстовых окон графические окна после команды установки фона SetBkColor и очистки с помощью ClearViewPort меняют фон вместе с общим фоном экрана. Поэтому фон (точнее «закраску») графического окна следует устанавливать с помощью процедур SetFillStyle и SetFillPattern . В остальном работа с графическим окном аналогична работе с текстовым окном.
3.4 Вывод точки
Какие бы изображения ни выводились на экран, все они построены из точек. Имея средство построения точки определенного цвета в нужном месте экрана, теоретически можно создать любое изображение, вплоть до картины. В библиотеке GRAPH вывод точки осуществляется процедурой PutPixel(X,Y:integer;Color:word); где X и Y — экранные координаты расположения точки, Color — ее цвет. Константы цвета в модуле GRAPH приведены в таблице 4. Таблица 4
Константы цвета
13
Константа | Значение | |
Black | ( черный) | |
Blue | 1 | (синий ) |
Green | 2 | (зеленый) |
Cyan | 3 | ( бирюзовый) |
Red | 4 | ( красный) |
Magenta | 5 | (малиновый) |
Brown | 6 | ( коричневый) |
LightGray | 7 | (светло-серый) |
DarkGray | 8 | (темно-серый) |
LightBlue | 9 | ( светло-синий) |
LightGreen | 10 | (светло-зеленый) |
LightCyan | 11 | ( светло-бирюзовый) |
LightRed | 12 | ( светло-красный) |
LightMagenta | 13 | ( светло-малиновый ) |
Yellow | 14 | ( желтый) |
White | 15 | (белый) |
Blink | 128 | ( мерцание) |
Символы могут быть любого цвета из таблицы, а цвет фона — только первых восьми (от 0-го до 7-го). Чтобы узнать цвет точки в конкретной позиции экрана, используется функция GetPixel(X,Y:integer):word .
3.5 Вывод линии
Из точек строятся линии (отрезки прямых). Это делает процедура Line (XI,Y1,Х2,Y2:integer); где XI, Y1 — координаты начала, Х2, Y2 — координаты конца линии. Например: Line(l,1,600,1); В процедуре Line нет параметра для установки цвета.
В этом и других аналогичных случаях цвет задается процедурой SetColor(Color:word) , где Color — цвет, значение которого берется из таблицы 4. Например: SetColor(Cyan); Line(1,1,600,1); Для черчения линий применяются еще две процедуры: LineTo и LineRel. LineTo(X,Y:integer) строит линию из точки текущего положения указателя в точку с координатами X,Y. LineRel(dX,dY:integer) проводит линию от точки текущего расположения указателя в точку СРх + dX, СРу + dY, где СРх и СРу — текущие координаты СР. Паскаль позволяет вычерчивать линии самого различного стиля: тонкие, широкие, штриховые, пунктирные и т.д. Установка стиля производится проце- дурой SetLineStyle(LineStyle:word; Pattern:word; Thickness:word) .
Источник: studfile.net
Microsoft Graph для разработчиков
Новые возможности Microsoft Graph, анонсированные на Build 2017, позволяют устанавливать ещё более интересные взаимосвязи между людьми, их беседами, проектами и контентом, не говоря о синхронизация работы в ваших приложениях на различных устройствах. Поэтому мы решили остановиться подробнее на этом инструменте и перевели статью о новых API-интерфейсах и функциях для разработчиков. «Офисные» разработчики, добро пожаловать под кат. 🙂
На конференции Build 2017 корпорация Microsoft представила новые API-интерфейсы и функции Microsoft Graph, которые существенно расширяют возможности набора инструментов, предлагаемых разработчикам бизнес-приложений и бизнес-процессов.
Microsoft Graph обеспечивает взаимодействие между разными сущностями — пользователями, операциями, а теперь и между различными устройствами, поддерживая при этом совместную работу и обмен информацией. Также у Microsoft Graph есть функция предоставления оперативных аналитических данных о компании.
Ниже мы подробно рассмотрим новые возможности Microsoft Graph с акцентом на трёх ключевых темах: «Разработка приложений на основе новых расширенных наборов данных», «Разработка мощных приложений с поддержкой новых функциональных возможностей платформы» и «Простая и удобная разработка приложений с помощью упрощенного интерфейса разработчика».