Графика Turbo Pascal
Графические процедуры и функции, машинные координаты. Модуль Graph, построение фигур, работа с текстом. Определение адаптера, инициализация и переход между текстом и графикой. Отличия графики Турбо-Паскаля и Турбо-Си. Основные недостатки BGI-графики.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | доклад |
Язык | русский |
Дата добавления | 06.02.2013 |
Размер файла | 73,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
КОЛЛЕДЖ ЭКОНОМИКИ, БИЗНЕСА И ПРАВА
КАРАГАНДИНСКОГО ЭКОНОМИЧЕСКОГО УНИВЕРСИТЕТА КАЗПОТРЕБСОЮЗА
Доклад
На тему: «Графика Turbo Pascal»
Выполнил:
Учащийся группы ИС-33
Коврига Юрий
Караганда 2011
Введение
графика turbo pascal турбо паскаль
Для использования графических возможностей Турбо Паскаля необходимо в блоке описания uses подключить графический модуль Graph. Модуль содержит набор графических функций и процедур, основные из которых рассмотрены ниже.
Графические процедуры
Arc (x,y: integer; St,En,R: word); {рисование дуги, где x,y - коорд. центра дуги, R - радиус, St, En - нач. и конечный углы.}
ClearDevice; {очистка экрана}
Circle (x,y: integer; R: word); {окружность радиуса R cцентром в точке (x,y)}
CloseGraph; {закрытие графики}
InitGraph (gd,gm: integer; Path: string); {инициализация графики, где
gd - графический драйвер,
gm - графический режим,
Path - путь размещения файла с расширением. bgi.}
Line (x1,y1,x2,y2: integer); {рисование линии, проходящей через две точки: с координатами (x1,y1) и (x2,y2)}
LineRel (dx,dy: integer); {рисование линии: dx, dy - приращения координат к координатам текущей позиции курсора}
LineTo (x,y: integer); {рисование линии, проходящую через текущую позицию курсора и точку с координатами (x,y)}
Moveto (x,y: integer); {задание координат текущей точки}
OutText (T: string); {вывод текста в текущую точку}
OutTextXY (x,y: integer; T: string); {вывод текста в точку с координатами х, у}
Rectangle (x1,y1,x2,y2: integer); {рисование прямоугольника: (x1,y1) и (x2,y2) - координаты противоположных вершин}
PutPixel (x,y: integer; c: word); {выводит точку с координатами (х, у) цветом с}
Графические функции
GetMaxX - определяет максимальный размер экрана по оси x.
GetMaxY - определяет максимальный размер экрана по оси y.
GetX - координата текущей позиции курсора по оси x.
GetY - координата текущей позиции курсора по оси y.
Машинные координаты
Начало машинной системы координат, направление осей, а также максимальные значения координат монитора показаны на рисунке
На рисунке приведена также машинная (xm, ym) и физическая (x,y) системы координат. Для изображения на экране точки с физическими координатами (x,y) необходимо определить ее машинные координаты (xm, ym). Расчетные формулы имеют следующий вид (попробуйте самостоятельно получить эти формулы):
xm=x0+x*Mx,
ym=y0-y*My,
где Mx, My-масштабы соответственно по осям x и y, которые показывают число пикселей в одной физической единице,
x, y - физические координаты точки,
xm, ym - машинные координаты точки,
x0, y0 - машинные координаты начала физической системы координат.
Пример. Нарисовать через весь экран горизонтальную и вертикальную линии, пересекающиеся в центре монитора.
Этапы разработки программы сведены в таблицу.
Таблица
N |
Этапы программирования |
Выполнение |
|
1. |
Постановка задачи |
Нарисовать через весь экран горизонтальную и вертикальную линии, пересекающиеся в центре монитора. |
|
2. |
Математическое описание |
Изобразим вид экрана с указанием координат требуемых линий |
|
3. |
Разработка структограммы |
||
4. |
Написание программы |
Program P5; Uses graph; {подключение граф. модуля} Var gd,gm: integer; Begin gd: =detect; {определение граф. драйвера} InitGraph (gd,gm,' `); {инициализация графики} Line (0, round (GetMaxY/2), GetMaxX, Round (GetMaxY/2)); {гориз. лин.} Line (round (GetMaxX/2), 0,Round (GetMaxX/2), GetMaxY); {вертик. лин.} Readln; {пустой ввод} CloseGraph; {закрытие графики} End. |
|
5. |
Отладка и получение результатов |
Выполнить самостоятельно |
Пример. Написать программу построения графика функции y=x2 для x [-1; 1].
Этапы разработки программы сведены в таблицу.
N |
Этапы программирования |
Выполнение |
|
1. |
Постановка задачи |
Построить график функции y=x2 для x? [-1; 1]. |
|
2. |
Математическое описание |
Изобразим вид экрана, который мы хотели бы получить после выполнения программы. |
|
3. |
Разработка структограммы |
||
4. |
Написание программы |
Program P6; Uses graph; Var gd,gm: integer; x,y: real; x0,y0,xm,ym,Mx,My: integer; begin gd: =detect; InitGraph (gd,gm,' `); Mx: =300; x0: =320; My: =440; y0: =460; {выбраны для монитора 640Ч480 пикс.} For xm: =20 to 620 do Begin x: = (xm-x0) /Mx; y: =sqr (x); ym: =round (y0-y*My); PutPixel (xm,ym,1); End; Readln; CloseGraph; End. |
|
5. |
Отладка и получение результатов |
Выполнить самостоятельно |
Модуль Graph
ТР обладает достаточно разнообразными средствами для работы со стандартным VGA экраном (возможно также использование и и других типов видеоадаптеров).
VGA адаптер имеет разрешение 640х480 пиксел (точка (0,0) в левом верхнем углу экрана), 16 цветов.
Перед началом работы с графикой необходимо ее инициализировать, а по окончании - "закрыть". Все графические процедуры и функции находятся в модуле Graph, поэтому также необходимо его подключение.
Общая структура графической программы:
Uses crt, graph;
var Gd, Gm: Integer;
begin
Gd: = Detect;
InitGraph (Gd, Gm, 'c: \bp\bgi');
...
{Здесь построение изображения}
...
ReadKey;
CloseGraph;
end.
Путь c: \bp\bgi указывает расположение файла egavga. bgi (драйвер графического адаптера). На разный компьютерах этот путь может быть разным. Если файл egavga. bgi поместить в каталог с программой, то путь можно не указывать.
Основные графические процедуры и функции. Построение фигур
PutPixel (x,y,c) - отображает на экране точку с координатами (x,y) и цветом c
Line (x1,y1,x2,y2) - рисует линию с началом в точке (x1,y1) и концом - (x2,y2)
Rectangle (x1,y1,x2,y2) - рисует контур прямоугольника с диагональю (x1,y1) - (x2,y2)
Bar (x1,y1,x2,y2) - рисует закрашенный прямоугольник с диагональю (x1,y1) - (x2,y2)
Circle (x,y,r) - рисует окружность с центром (x,y) и радиусом r
Ellipse (x,y,ba,ea,xr,yr) - рисует дугу эллипса с центром в (x,y), горизонтальным и вертикальным радиусом xr и yr, и начальным и конечным углом ba и ea
FillEllipse (x,y,xr,yr) - рисует закрашенный эллипс с центром в (x,y), горизонтальным и вертикальным радиусом xr и yr
Определение цветов и стилей
GetPixel (x,y) - возвращает цвет пиксела с координатами (x,y)
SetColor (c) - устанавливает цвет изображения (для линий)
SetFillStyle (p,c) - устанавливает текущий стиль p и цвет c (для "закрашенных" фигур)
FloodFill (x,y,b) - закрашивает замкнутую область с внутренней точкой (x,y) и цветом контура b
Работа с текстом
OutTextXY (x,y,st) - выводит на экран строку st с позиции (x,y)
SetTextStyle (f,d,s) - устанавливает шрифт f, его направление d и размер
Сообщения об ошибках
function GraphErrorMsg (ErrorCode: integer): String; Возвращает строку сообщения об ошибке для заданного кода ErrorCode.
function GraphResult: integer; Возвращает код ошибки для последней графической операции.
Определение адаптера, инициализация и переход между текстом и графикой
procedure DetectGraph (var GraphDriver, GraphMode: integer); Проверяет аппаратуру и определяет какой графический драйвер и в каком режиме используется (тип адаптера - в GraphDriver, режим - GraphMode).
function GetDriverName: string; oзвращает строку с именем текущего драйвера.
procedure InitGraph (var GraphDriver: integer; var GraphMode: integer; PathToDriver: String); Инициализирует графическую систему и устанавливает устройство в графический режим. PathToDriver - полный путь к драйверу. bgi, обычно 'c: \tp\bgi'. Если путь опущен (''), то драйвер должен находится в текущем каталоге.
function RegisterBGIfont (Font: pointer): integer; Регистрирует шрифт BGI для графической системы. Зарегистрированный фонт может использоваться в вызове SetTextStyle. Он может быть загружен с диска в кучу или преобразован в. obj файл (с помощью binobj. exe) и связан в файл. exe. В случае ошибки функция возвращает отрицательное значение.
function RegisterBGIdriver (Driver: pointer): integer; Регистрирует драйвер BGI для графической системы. Зарегистрированный драйвер будет использоваться процедурой InitGraph. Он может быть загружен с диска в кучу или преобразован в. obj файл (с помощью binobj. exe) и связан в файл. exe. В случае ошибки функция возвращает отрицательное значение.
function InstallUserDriver (DriverFileName: string; AutoDetectPtr: pointer): integer; Устанавливает пользовательский драйвер устройства в BGI таблицу драйверов устройств.
function InstallUserFont (FontFileName: string): integer; Устанавливает новый шрифт, который не встроен в BGI систему.
procedure SetGraphBufSize (BufSize: word); Позволяет изменить размер буфера для функций заполнения (закрасок). Буфер с размером BufSize байт размещается в куче при обращении к InitGraph. По умолчанию размер 4К, что достаточно для построения многоугольника с 650 линиями.
function GetMaxMode: integer; Возвращает номер максимального режима текущего загруженного драйвера.
procedure GetModeRange (GraphDriver: integer; var LoMode, HiMode: integer); Возвращает минимальный и максимальный графические режимы для данного драйвера.
function GetModeName (GraphMode: integer): string; Возвращает строку с именем указанного графического режима.
procedure SetGraphMode (Mode: integer); Переводит систему в указанный графический режим и очищает экран.
function GetGraphMode: integer; Возвращает текущий графический режим.
procedure GraphDefaults; Устанавливает текущий указатель (CP) в исходную позицию (т.е. точку 0,0) и сбрасывает все устанавливаемые пользователем режимы в исходное состояние, в т. ч. окна, палитру, основной цвет и цвет фона, стиль линий, шрифт, выравнивание текста, размер символов и стиль выводимого текста. Система должна находиться в графическом режиме.
procedure RestoreCrtMode; Восстанавливает текстовый видеорежим, который был до инициализации графики. Не освобождает буфер и не обнуляет установленные переменные.
procedure CloseGraph; Закрывает графическую систему. Восстанавливает текстовый видеорежим, который был до инициализации графики. Освобождает буфер и сбрасывает все графические переменные.
Координаты графического курсора
function GetX: integer; Возвращает координату X текущей позиции (CP).
function GetY: integer; Возвращает координату Y текущей позиции (СР).
function GetMaxX: integer; Возврашает максимальный Х (разрешение по горизонтали) для текущего графического драйвера и режима.
function GetMaxY: integer; Возвращает максимальный Y (разрешение по вертикали) для текущего графического драйвера и режима.
Отличия графики Турбо-Паскаля и Турбо-Си
Турбо-Паскаль не различает отличий в регистрах (маленькие или большие буквы) при написании констант, типов, процедур и функций модуля Graph. В Турбо-Си все константы, типы, переменные должны быть в верхнем регистре (заглавными буквами), а названия процедур и функций - в нижнем (прописными буквами). Содержание библиотек графики при этом абсолютно одинаково.
Недостатки BGI-графики
Несмотря на обширные возможности для деловой графики, графические средства с точки зрения профессионального разработчика оставляют желать лучшего. Нельзя работать с произвольными спрайтами, нет скроллинга экрана, сохранения / вывода всего изображения, масштабирования картинки, функции заполнения и работы с битовыми образами работают медленно, невозможно использование файлов других графических форматов, отсутствуют трехмерные изображения и т.д. Все это делает затруднительным написание графических редакторов, игрушек, систем инженерной и математической графики. Для реализации вышеуказанных возможностей необходимо напрямую управлять графическим адаптером, используя прямой доступ в видеопамять и служебные функции BIOS.
Размещено на Allbest.ru
...Подобные документы
Использование графических возможностей Турбо Паскаля, подключение графического модуля Graph. Графические функции и процедуры. Общая структура графической программы. Построение фигур, определение цветов и стилей, работа с текстом, сообщения об ошибках.
реферат [109,3 K], добавлен 28.04.2010Особенности использования графического режима в среде Турбо Паскаль. Типы драйверов. Инициализация графики. Построение изображения на экране. Графические примитивы и работа с текстом. Разработка и реализация программ в среде Турбо Паскаль "Графика".
курсовая работа [1,2 M], добавлен 26.09.2014Мультимодульная программа расчёта и построения графиков переходного процесса в электрической цепи, ее процедуры и функции. Распечатка текста и графики процесса, построенные с использованием стандартных модулей Турбо Паскаля CRT и GRAPH и Microsoft Excel.
курсовая работа [880,7 K], добавлен 07.12.2011Файлы BGI и содержимое модуля Graph, инициализация и закрытие графических режимов, их классификация, анализ и управление. Рисование графических примитивов и фигур, управление цветами и шаблонами, вывод текста, выбор шрифта и стиля, сжатия изображения.
реферат [65,3 K], добавлен 31.05.2010Разновидности и задачи подпрограмм в языке Турбо Паскаль, их локальные и глобальные параметры. Использование процедуры для выполнения законченной последовательности действий. Формат объявления функции, особенности рекурсивного оформления подпрограммы.
реферат [20,0 K], добавлен 08.02.2012Суть принципа точечной графики. Изображения в растровой графике, ее достоинства. Обзор наиболее известных редакторов векторной графики. Средства для работы с текстом. Программы фрактальной графики. Форматы графических файлов. Трехмерная графика (3D).
дипломная работа [764,7 K], добавлен 16.07.2011Пользовательский интерфейс Flash и его типовые функции. Форматы статичной графики. Рисование. Работа с цветом, с текстом. Импорт графики. Работа с графическими фрагментами. Образцы и библиотеки. Проводник Flash. Публикация и экспорт статичной графики.
дипломная работа [156,4 K], добавлен 07.12.2008Понятие и история развития языка Turbo Pascal, оценка его графических возможностей и особенностей. Инициализация графического режима. Управление экраном и окнами, цветом и фоном, принципы работы с текстом. Построение графиков функций и изображений.
курсовая работа [159,9 K], добавлен 17.12.2014Краткая история становления языка программирования Pascal и основные понятия графики. Основные функции и процедуры работы с графикой в PascalABC. Создание графического проекта: понятие "фрактал" и реализация треугольника. Построения фрактала "Дерево".
курсовая работа [1,4 M], добавлен 26.10.2014Векторная компьютерная графика. Графические примитивы. Графические возможности языка программирования Pascal. Методические рекомендации к изучению графики в языке программирования Pascal. Построение графиков функций.
курсовая работа [28,3 K], добавлен 13.06.2007Окна Турбо отладчика, меню View, Module, Wathes, Breakpoints, Stack, Log. Окно сообщений Windows (Windows Messages). Подготовка программ Турбо Ассемблера. Команды, доступные из основного меню. Меню Ё (системное меню). Параметры командной строки.
доклад [21,7 K], добавлен 22.09.2008Характеристика мови Turbo Pascal. Опис деяких графічних процедур і функцій модуля Graph. Робота в графічному режимі. Процедури, опції модуля CRT. Створення програми розв'язку системи нерівностей з двома змінними в графічному режимі Турбо Паскаля.
курсовая работа [35,0 K], добавлен 24.02.2011Сферы применения машинной графики. Виды компьютерной графики. Цветовое разрешение и цветовые модели. Программное обеспечение для создания, просмотра и обработки графической информации. Графические возможности текстовых процессоров, графические редакторы.
контрольная работа [21,9 K], добавлен 07.06.2010Редакторы для растровой графики. Программы для работы с векторной графикой. Возможности фракталов в художественной графике, при описании свойств сложных природных объектов (турбулентных потоков), финансовом анализе и в других прикладных дисциплинах.
лекция [785,4 K], добавлен 28.08.2013Основные сведения о системе программирования Турбо Паскаль. Структура программы на Паскале и ее компоненты. Особенности и элементы языка Турбо Паскаль. Порядок выполнения операций в арифметическом выражении, стандартные функции и оператор присваивания.
лекция [55,7 K], добавлен 21.05.2009Особенности графики системы MATLAB и ее основные отличительные черты. Построение графика функций одной переменной. Графики в логарифмическом масштабе, построение диаграмм, гистограмм, сфер, поверхностей. Создание массивов данных для трехмерной графики.
реферат [1,4 M], добавлен 31.05.2010Общая характеристика растровой, векторной и фрактальной компьютерной графики, преимущества и недостатки. Определение параметров технической реализуемости автоматизации ввода и оцифровки изобразительной информации. Оценка фотореалистичности изображения.
презентация [785,4 K], добавлен 26.07.2013Достоинства и недостатки векторной графики, ее применение и основной принцип построения графических объектов. Объектно-ориентированный подход к пакетам векторной или иллюстративной графики. Основные программы, редакторы и форматы векторной графики.
курсовая работа [129,0 K], добавлен 30.05.2015Линейная программа на Паскаль, примеры составления алгоритмов вычисления и обмена значений переменных. Программа с ветвлениями и циклическая программа, массивы, процедуры и функции, файловые данные и записи в Паскале, строки, графика в Турбо-Паскале.
отчет по практике [99,8 K], добавлен 20.07.2010Основные понятия и задачи, решаемые компьютерной графикой. Характеристика и разновидности компьютерной графики. Цветовые модели RGB, CMYK, HSB. Графические форматы растровых и векторных изображений. Особенности шелкографии, трёхмерная графика и анимация.
курсовая работа [350,7 K], добавлен 20.02.2012