Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема Graph.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
176.13 Кб
Скачать

Тема 3.1. Модуль Graph. Графічний режим.

  1. Перемикання екрану в графічний режим.

  2. Закінчення роботи в графічному режимі.

  3. Робота в графічному режимі.

  4. Графічні режими.

  5. Кольори та палітри.

  6. Переміщення поточного вказівника та малювання точки.

  7. Малювання ліній.

  8. Малювання геометричних фігур.

  9. Виведення тексту в графічному режимі.

  10. Аналіз програм з елементами графіки, звукових сигналів.

Turbo-Pascal забезпечує два режими виведення інформації на екран: текстовий і графічний. У текстовому режимі одиницею виведення є символ. Екран (або вікно, якщо Turbo-Pascal запущений з під Windows в режимі емуляції DOS), на який виводиться інформація, містить 80 символів у ширину і 25 у висоту. У графічному режимі одиницею виведення є точка екрану (піксель ). Кількість точок по ширині та висоті екрану залежить від фізичних параметрів монітора. Для точок екрану запроваджена координатна система. Вважається, що верхній лівий кут графічного екрану має координати (0,0). Значення по координаті Х (ширина екрану) збільшуються праворуч. Значення Y (висота екрану) збільшуються вниз.

Організація в програмі виведення на екран в графічному режимі включає такі дії:

1) у програмі чи модулі повинно бути оголошено про використання модуля Graph. Для цього розділ підключення модулів повинен містити рядок Uses Graph;

2) Перемикання екрана в графічний режим.

3) Робота в графічному режимі.

4) Закінчення роботи в графічному режимі, тобто перехід в текстовий режим.

Перемикання з одного режиму в інший призводить до очищення екрана. Інформація, виведена в попередньому режимі, втрачається. Тому необхідно програмно забезпечити, якщо це Потрібно, перегляд або запам'ятовування інформації перед перемиканням екрана в інший режим.

1. Перемикання екрана в графічний режим.

Для перемикання екрана в графічний режим використовують процедуру IпitGгарh та допоміжну процедуру DetectGraph.

Процедура ІnіtGrарh ініціалізує графічну систему і переводить апаратні засоби в графічний режим. Опис процедури має вигляд:

ІnitGrарh(vаr <граф_драйвер> : іntеgег; var <граф_режим> : integer; <шлях _драйвер> : string)

Параметр <граф_драйвер> і параметр <граф_режим> є параметрами-змінними (var). У модулі Graph визначено наступні константи, значення яких може приймати параметр <граф_драйвер>:

Detect = 0; {Вимога автоматичного розпізнавання}

CGA = І;

МСОА =2;

ЕGА = 3;

ЕGА64 =4;

EgaMono =5;

Reserved = 6;

HercMono = 7;

АТТ400 = 8;

УGА =9;

РС3270 = 10;

Якщо параметр <граф_драйвер> дорівнює Detect, то виконується виклик процедури DetectGraph, яка автоматично визначає параметри <граф_драйвер> і <граф_режим>. Після чого процедура ІnіtGrарh завантажує відповідний драйвер і вибирає графічний режим. Якщо параметр <граф_драйвер> не дорівнює 0, то значення цього параметра розглядається, як номер драйвера. Цей драйвер завантажується і система переводиться в режим, що визначається параметром <граф_режим>. У цьому випадку програміст сам повинен забезпечити коректне значення параметрів <граф_драйвер> і <граф_режим>. Параметр <шлях_драйвер> визначає шлях доступу до каталогу, у якому знаходяться графічні драйвери. Якщо цей параметр порожній, то мається на увазі, що файли драйверів містяться в поточному каталозі. Для графічного драйвера виділяється оперативна пам'ять. При звертанні до процедури CloseGraph ця пам'ять вивільнюється. Якщо при виконанні процедури InitGraph відбувається помилка, то параметр <граф_драйвер> приймає значення одного з кодів помилок, наведених в описі функції GraphResult.

Процедура DetectGraph перевіряє наявність відповідних апаратних засобів і визначає, який графічний драйвер і режим потрібно використовувати. Опис процедури має вигляд:

DetectGraph(var <граф_драйвер>, <граф_режим> : integer)

Процедура повертає значення обраного режиму і драйвера, які можна передати як параметри процедурі InіtGraph для завантаження відповідного драйвера.

Якщо графічна апаратура не знайдена, то параметри <граф_драйвер> і <граф_режим> будуть містити значення -2.

Функція GraphResult : integer. Повертає код помилки для останньої графічної операції. У модулі Graph визначено наступні константи, що позначають коди можливих помилок:

Константа помилки графіки

Код помилки

Відповідне повідомлення про помилку

grOk

0

немає помилки

grNoInitGraph

-1

графічний режим не встановлений

grNotDetected

-2

графічна апаратура не знайдена

grFileNotFound

-3

драйвер графічного пристрою не знайдений

grInvalidDriver

-4

неправильний файл драйвера графічного пристрою

grNoLoadMem

-5

не вистачає пам’яті для завантаження драйвера

grNoScanMem

-6

вихід за межі пам’яті при перегляді області замальовування

grNoFloodMem

-7

вихід за границі пам’яті при замальовуванні

grFontNotFound

-8

файл шрифту не знайдений

grNoFontMem

-9

шрифт не завантажений у пам’ять

grInvalidMode

-10

неприпустимий графічний режим для обраного драйвера

grError

-11

помилка графіки

grІOError

-12

помилка введення-виведення графіки

grInvalidFont

-13

неприпустимий файл шрифту

grІnvalidFontNum

-14

неприпустимий номер шрифту

Після кожного звертання до функції GraphResult код помилки скидається в 0. Тому користувачу варто зберегти значення коду помилки в тимчасовий змінній і потім перевірити її. У модулі Graph передбачена рядкова функція GraphErrorMsg(ErrorCode :integer):string, яка повертає рядок повідомлення, що відповідає кожному значенню кода помилки ErrorCode.

Приклад:

uses Graph;

var ErrorCode: integer;

GrDriver, GrMode : integer;

begin

GrDriver := Detect;

InitGraph( GrDrivег, GrМode);

ErrorCode := GraphResult; {перевірка на помилки}

if ErrorCode <> grOk then

begin

writеln('Помилка графіки: ');

writeln( GraphЕrrоrМsg(ErrorCode));

writеln('Програма аварійно завершила роботу!...');

hаlt(1);

end;

{ якщо графічний режим встановлений успішно, то виконати деякі графічні функції}

closegraph;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]