Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методические_указания_Паскаль.doc
Скачиваний:
62
Добавлен:
15.02.2015
Размер:
1 Мб
Скачать
☆

Программирование операций с графикой

Цель работы: Изучение основных возможностей языка Паскаль по программированию операций с графикой. Получение навыков визуализации (графического представления) результатов работы программы.

Краткие теоретические сведения

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

Подключение графической библиотекипри программировании в среде PascalABCпроизводится оператором:

usesGraphABC;

Модуль GraphABCсодержит константы, типы, процедуры, функции и классы для рисования вграфическом окне. Они подразделяются на следующие группы: действия с графическим окном,графические примитивы,действия с цветом,действия с пером,действия с кистью,действия со шрифтоми другие. Система координат, с которой работают графические функции имеет следующий вид (рисунок 7).

Рисунок 7 – Система координат графического окна

Действия с графическим окном

procedure ClearWindow;

Очищает графическое окно белым цветом.

procedure ClearWindow(c: ColorType);

Очищает графическое окно цветом c.

function WindowWidth: integer;

Возвращает ширину графического окна.

function WindowHeight: integer;

Возвращает высоту графического окна.

procedure SetWindowWidth(w: integer);

Устанавливает ширину графического окна.

procedure SetWindowHeight(h: integer);

Устанавливает высоту графического окна.

procedure SetWindowSize(w,h: integer);

Устанавливает ширину и высоту графического окна.

procedure SetWindowCaption(s: string);

Устанавливает заголовок графического окна.

procedure CloseWindow;

Закрывает графическое окно.

function ScreenWidth: integer;

Возвращает ширину экрана.

function ScreenHeight: integer;

Возвращает высоту экрана.

procedure CenterWindow;

Центрирует графическое окно по центру экрана.

procedure MaximizeWindow;

Максимизирует графическое окно на экране.

procedure NormalizeWindow;

Восстанавливает положение графического окна на экране.

Все размеры устанавливаются и возвращаются в пикселах. Это обстоятельство необходимо учитывать в практических задачах. Например, при построении графика функции значения аргумента и функции должны быть масштабированы под размер окна и обязательно округлены до ближайшего целого числа. Для этого используются функции Round(x) и Trunc(x).

Основные графические примитивы

procedure SetPixel(x,y,color: integer);

Закрашивает один пиксел с координатами (x,y) цветом color.

function GetPixel(x,y): integer;

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

procedure MoveTo(x,y: integer);

Передвигает невидимое перо к точке с координатами (x,y); эта функция работает в паре с функцией LineTo(x,y).

procedure LineTo(x,y: integer);

Рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).

procedure Line(x1,y1,x2,y2: integer);

Рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).

procedure Circle(x,y,r: integer);

Рисует окружность с центром в точке (x,y) и радиусом r.

procedure Rectangle(x1,y1,x2,y2: integer);

Рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).

procedure Arc(x,y,r,a1,a2: integer);

Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).

procedure TextOut(x,y: integer; s: string);

Выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s).

procedure FillRect(x1,y1,x2,y2: integer);

Заливает прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2), цветом текущей кисти.

procedure Polygon(var a; n: integer);

Строит ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.

procedure Polyline(var a; n: integer);

Строит замкнутую ломаную по n точкам, координаты которых заданы в массиве a элементов типа Point.

Пример. Программа, демонстрирующая возможности графических функций (рисование пикселов случайного цвета).

program sky;

uses GraphABC, crt;

var

Gx, Gy, xc, yc, i: integer;

begin

Randomize;

Gx:=WindowWidth;

Gy:=WindowHeight;

Repeat

i:= RGB(random(256),random(256),random(256));

SetPenColor(i);

xc:= random(Gx);

yc:= random(Gy);

SetPixel(xc, yc, i);

Until KeyPressed;

end.

Задание на работу

Построить график функции для заданного варианта (таблица 15). Представить все элементы: сам график, оси координат, подписи числовых делений (рисунок 8). Построение графика должно сопровождаться выводом значений аргумента и функции в отдельное окно.

Рисунок 8 – Общий вид графика функции

Таблица 15 – Варианты заданий

Номер

варианта

Исходные данные

Аргумент

Функция

0

1

2

3

4

5

6

7

8

9