АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

РАБОТА С ГРАФИКОЙ

Читайте также:
  1. V. САМОСТОЯТЕЛЬНАЯ РАБОТА
  2. Window - работа с окнами.
  3. Аналитическая работа при выборе и обосновании стратегии развития предприятии
  4. Б) работа врачей поликлиники (амбулатории), диспансера, консультации
  5. В 72-х дневном цикле подвиг длится 8 суток, из которых 2 суток – голод, а 6 – очистительные процедуры и работа над собой. В 12-ти летнем цикле подвиг длится 1 год.
  6. В работах В. Джеймса
  7. В) профилактическая работа
  8. Виртуальная работа силы. Идеальные связи
  9. Власть и норма в работах Фуко
  10. Влияние на организм термически обработанной пищи
  11. Влияние работающего на точность изготовляемых деталей.
  12. Внеклассная работа по русскому языку: принципы, виды и формы организации.

Турбо-Паскаль дает возможность выводить на экран рисунки, чертежи, графики функций, диаграммы. Все это называют машинной графикой. В стандарте Паскаля графический вывод не предусмотрен. Но есть мощная графическая библиотека, оформленная в виде модуля Graph, для подключения которого необходимо в начале программы написать:

Uses Graph;

Для вывода графических изображений необходимо перевести экран в графический режим. Графический режим характеризуется:

* количеством точек (пикселов) по горизонтали и вертикали, светимостью которых можно управлять, обращаясь к ним по координатам. Координата верхнего левого угла - (0,0); координата Х изменяется слева направо, максимальная координата по Х определяется функцией GetMaxX; координата Y изменяется сверху вниз, максимальную координату по Y определяет функция GetMaxY.

* количеством воспроизводимых на экране цветов (палитра).

Допустимые графические режимы зависят от типа используемого монитора и соответствующего графического драйвера компьютера. Для установки графического режима используется процедура: Procedure InitGraph (Var Driver, Mode: integer; Path: string). Driver определяет тип графического драйвера, Mode - режим работы графического драйвера, Path - путь до файла графического драйвера. Таким образом, для инициации графического режима необходима следующая последовательность операторов:

Uses Graph;

Var Driver, Mode: integer;

Begin

Driver:= Detect; {автоматическое определение типа драйвера и установка режима}

InitGraph (Driver, Mode, ‘C:\TP7\BGI’);

.......

CloseGraph; {отмена графического режима и возврат в текстовый режим}

end.

В графическом режиме используются следующие операторы:

Цвет фона SetBkColor (цвет); цвет может иметь значение 0¸7 или

эквивалентное английское название

Цвет рисунка SetColor (цвет); цвет может иметь значение 0¸15.

(соответственно: 0 - Black - черный; 1 - Blue - синий; 2 - Green - зеленый; 3 - Cyan -голубой; 4 - Red - красный; 5 - Magenta - фиолетовый; 6 - Brown - коричневый; 7 - LightGrey - светло-серый; 8 - DarkGrey - темно-серый; 9 - LigthBlue - ярко-голубой; 10 - LigthGreen - ярко-зеленый; 11 - LigthCyan - ярко-голубой; 12 - LigthRed - розовый; 13 - LigthMagenta - малиновый; 14 - Yellow - желтый; 15 - White - белый; 128 - Blink - мерцающий).

Высвечивание точки с координатами Х, Y на экране PutPixel (X, Y, цвет).

Перемещение курсора в точку (Х, Y) MoveTo (X, Y).

Прямая линия между точками (X1, Y1) и (X2, Y2) Line (X1, Y1, X2, Y2).

Прямая линия от текущей точки до точки (X, Y) LineTo (X, Y).

Прямоугольник с верхним левым углом (X1, Y1)

и нижним правым (X2, Y2) Rectangle(X1, Y1, X2, Y2).

Закрашенный прямоугольник с верхним левым

углом (X1, Y1) и нижним правым (X2, Y2) Bar (X1, Y1, X2, Y2).

Установление цвета закраски SetFillStyle (штриховка, цвет).

(штриховка: 0 - цвет фона; 1 - сплошная; 2 - ‘- - - ‘; 3 - ‘///’;

4 -‘ ///’ утолщенные; 5 - ‘\\\’ утолщенные; 6 - ‘\\\’; 7 - клетка;

8 - косая клетка; 10 - редкие точки; 11 - частые точки).

Закрашивание области FloodFill (X, Y, цвет границы),

где X, Y - координаты точки внутри области.

Окружность Circle (X, Y, радиус).

Задача 1. Нарисуйте домик в графическом режиме.

Решение.

{рисование домика}

Uses Graph;

Var Driver, Mode: integer;

begin

{переход в графический режим}

InitGraph (Driver, Mode, ‘C:\TP7\BGI’);

SetBkColor (6); {фон - коричневый}

SetColor (2); {цвет линий - зеленый}

Rectangle (200, 200, 400, 400);

Line (200, 200, 300, 150);

Line (300, 150, 400, 200);

{рисование окна}

Rectangle (250, 250, 350, 350);

Line (250, 280, 350, 280);

line (300, 280, 300, 350);

{рисование солнышка}

SetColor (14); {цвет линий - желтый}

Circle (100, 100, 30);

{рисование лучей}

Line (65, 100, 40, 100);

Line (100, 65, 100, 40);

Line (135, 100, 160, 100);

Line (100, 135, 100, 160);

Line (125, 125, 145, 145);

Line (55, 55, 75, 75);

Line (125, 75, 145, 55);

Line (55 145, 75, 125);

readln;

CloseGraph;

end.

 

Упражнения.

1. Нарисуйте домик в символьном режиме, используйте при этом процедуры модуля CRT (GoToXY (x, y) - перемещение курсора в точку с координатами (x, y); TextBackGround (цвет) - цвет фона; TextColor (цвет); ClrScr - очистка экрана).

2. Нарисуйте в графическом режиме лампочку, которая зажигается и гаснет.

 

 

3. Нарисуйте в графическом режиме паровозик.

4. Измените программу таким образом, чтобы паровозик двигался. Примечание: движение получается, если каждый раз рисовать паровозик на новом месте. При изменении координаты Х с отрицательным шагом паровозик будет двигаться влево, иначе - вправо.

5. Измените программу так, чтобы паровозик уезжал за пределы экрана и возвращался с другой стороны.

Задача 2. Нарисуйте график функции y = |x - 2| на отрезке - 25 до 25.

Решение. Сначала необходимо начертить оси координат и подписать их. Оси необходимо выбирать таким образом, чтобы они пересекались. Поскольку мы перенесли начало координат в точку пересечения осей и направление оси Y изменилось на противоположное, координаты точек на экране будут определяться следующим образом:

X = X0 + абцисса; Y = Y0 - ордината,

где X0, Y0 - координаты точки пересечения осей X и Y, т.е. центра новой системы координат.

Теперь необходимо выбрать масштаб по осям X и Y. Масштаб показывает какая часть экрана изображает единицу графика. Чтобы задать масштаб необходимо определить размеры экрана, отводимые под график. Для определенности будем считать, что весь экран будет отведен под график, поэтому:

mx = GetMaxX/(Xmax - Xmin + 1) = GetMaxX/(25 - (-25) + 1).

Для оси Y необходимо определить Ymax и Ymin (соответственно |-25 -2| = 27 и 0). Весь график будет выше оси X. Будем использовать для изображения отрезка [0; 27] GetMaxY div 2 точек, поэтому my:= GetMaxY div 2/ 30.

Затем необходимо нанести единицы измерения на оси, ось Х разметим с шагом 5, ось Y - с шагом 1.

Теперь можно приступить к построению графика функции. Будем строить графики, соединяя соседние точки линейными отрезками. Для достижения плавности нужно увеличивать количество точек.

Uses Graph;

var driver, mode: integer; {для инициализации графического режима}

x0, y0: integer; { координаты центра}

x, y, i: integer; { координаты текущей точки

i - счетчик циклов}

mx, my: real; {масштабы}

s: string; {для разметки осей}

begin

driver:= detect;

InitGraph (driver, mode, ‘C:\TP7\BGI’);

SetBkColor (7); SetColor(1);

x0:= GetMaxX div 2;

y0:= GetMaxY div 2;

{рисуем оси координат}

{ось X}

line (0, y0, GetMaxX, y0); line (GetMaxX, y0, GetMaxX - 10, y0 -10); {прорисовка}

line (GetMaxX, y0, GetMaxX - 10, y0 +10); {®}

OutTextXY (GetMaxX - 10, y0 - 15, ‘X’);

{ось Y}

line (x0, 0, x0, GetMaxY); line (x0, 0, x0 - 10, 10); {прорисовка}

line (x0, 0, x0 + 10, 10); {­}

OutTextXY (x0 - 20, 5, ‘Y’);

mx:= GetMaxX/(25 - (-25 + 2)); my:= GetMaxY div 2/30;

{нанесение единиц измерения на оси}

for i:= -25 to 25 do

begin x:= x0 + round (i * mx);

if i mod 5 = 0 then begin line (x, y0 - 2, x, y0 + 2);

str (i, s); OutTextXY (x + 4, y0 + 2, s)

end;

end;

for i:= -30 to 30 do

begin y:= y0 - round (i * my);

if i mod 5 = 0 then begin line (x0 - 2, y, x0 +2, y);

str (i, s); OutTextXY (x0 + 4, y, s)

end;

end;

{вывод графика}

x:= x0 + round (-25 * mx);

y:= y0 - round (30 * my);

MoveTo (x, y);

for i:= - 24 to 25 do

begin x:= x0 + round (i * mx);

y:= y0 + round (abs(i - 2) * my);

end;

OutTextXY (x0 + 50, y0 + 200, ‘график функции y = |x-2|’);

readln;

CloseGraph;

end.

 

Упражнения.

1. Напишите программу вывода графика функции y = ïx - 2ïна участке - 25 до 25 в символьном режиме.

2. Напишите программу вывода в графическом режиме графика функции y = a + sin (x - b) на отрезке - 10 до 15.

Задача 3. Выведите на экран орнамент. Повторяющийся фрагмент выделен пунктиром. Прорисовка этого фрагмента будет оформлена в виде процедуры. В качестве параметров используются координаты верхнего левого угла.

 
 

 

 


Uses Graph;

var driver, mode: integer;

x, y: interger;

procedure cadr (x, y: integer);

begin

rectangle (x + 10, y + 10, x + 30, y + 30);

line (x, y, x + 10, y + 10); line (x + 40, y, x + 30, y + 10);

line (x, y + 40, x + 10, y + 30); line (x + 40, y + 40, x + 30, y + 30);

end;

begin {тело основной программы}

driver:= detect;

InitGraph (driver, mode, ‘C:\TP7\BGI’);

x:= 0;

while x <= GetMaxX do

begin

y:= 0;

while y <= GetMaxY do

begin

cadr (x, y); y:= y + 40

end;

x:= x + 40;

end;

readln;

CloseGraph;

end.

Упражнения.

1. Внести такие дополнения в программу, чтобы:

· узор был цветным;

· у каждой строки узора был свой цвет;

· цвет менялся от фрагмента к фрагменту.

2. В примере 3 повторение фрагмента осуществляется сначала по горизонтали, затем по вертикали. Измените программу так, чтобы узор выводился сначала по вертикали, а затем по горизонтали.

3. Измените шаг узора по вертикали и горизонтали.

4. Почему настройка на графический режим сделана в основной программе, а не в процедуре? Как будет работать программа, если сделать настройку в процедуре?

5. Напишите процедуру рисования елочки. Используя эту процедуру, нарисуйте еловый лес.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.026 сек.)