Опис графічних операцій мовою програмування Ініціалізація графіки
Вид материала | Документы |
- План. Організаційна частина., 61kb.
- Програма, написана мовою паскаль, складається з лексем, 407.13kb.
- Програма, написана мовою паскаль, складається з лексем, 660.73kb.
- І. В. Коровай Урок по темі: «Табличні величини та їх опис навчальною алгоритмічною, 62.47kb.
- Технологія програмування мовою с навчально-методичні матеріали, 298.46kb.
- №5 : "Робота з Windows 98", 224.2kb.
- Формат опису модуля, 17.43kb.
- Програма кредитного модуля " програмування процедурне програмування " для напрямків, 151.91kb.
- Тема: Програмування. Основні етапи розробки прикладних програм, 2022.7kb.
- Розділ: Різне Класифікація графіки, 96.86kb.
Опис графічних операцій мовою програмування
Ініціалізація графіки
uses graph;
var gm,gd:integer;
begin
gd:=detect;
InitGraph(gd,gm,’D:\tp7’) {шлях до файла graph.tpu}
Координатна сітка
Екран у графічному режимі може адресуватися за допомогою системи координат, причому значення Х (номера стовпчика) збільшується зліва праворуч, а значення Y (номера рядка) збільшується зверху до низу. За замовчанням координати екрана мають такий вигляд:
(0,0) - лівий верхній кут;
(639,0) - правий верхній кут;
(319,239) - центр;
(0,479) - лівий нижній кут екрана;
(639,479) - правий нижній кут.
Процедури графіки
До основних процедур для роботи з графікою, за допомогою яких можна виконати майже всі завдання шкільного курсу, відносяться наступні:
Arc(X,Y:integer; поч_кут, кін_кут, радіус:word) - програмна процедура, результатом роботи якої є дуга окружності з центром в точці (X,Y) і радіусом "радіус". Дуга креслиться від початкового кута ("поч_кут") до кінцевого кута ("кін_кут"). При цьому використовується поточний колір малювання.
Bar(X1,Y1,X2,Y2) - процедура малює зафарбований прямокутник, використовуючи колір зафарбування, що встановлюється процедурою SetFillStyle. Контур прямокутника креслиться кольором і типом лінії, що встановлені процедурами SetLineStyle і SetColor. Точки з координатами (X1,Y1) та (X2, Y2) задають дві діагонально протилежні вершини прямокутника.
Bar3D(Xl,Yl,X2,Y2:integer; глибина : word, вершина : boolean) - процедура малює зафарбований тривимірний паралелепіпед. Контур паралелепіпеда креслиться кольором і типом лінії, що встановлені процедурами SetLineStyle і SetColor, тип і колір зафарбування встановлюється за допомогою процедур SetFillStyle. "Глибина" являє собою число елементів зображення, що задають третій вимір тривимірного контуру. Якщо змінна, зазначена як параметр "вершина", приймає істинне значення (True), то для паралелепіпеда малюється тривимірна вершина, у протилежному випадку вершина не малюється (що дозволяє малювати кілька паралелепіпедів, розташованих один на одному).
Circle(X,Y:integer; радіус : word) - процедура малює окружність поточним кольором. Точка (X,Y) - центр окружності, а "радіус" - її радіус.
ClearDevise - процедура очищує поточний графічний екран і підготовлює його для виведення даних.
ClearViewport - процедура очищує поточне вікно.
CloseGraph - процедура припиняє роботу графічної системи (закриття графіки) і повертає монітор до текстового режиму.
DetectGraph(Var драйвер, peжим : integer) - процедура перевіряє наявність відповідних апаратних засобів і визначає, який графічний режим і драйвер варто використовувати.
Ellipse(X,Y:integer; поч_кут, кін_кут:word; paдХ,paдY:word) - процедура малює еліптичну дугу, використовуючи (X,Y), як точку центра і "радХ", "paдY" - як радіуси на горизонтальній і вертикальній осях. Дуга еліпса малюється від початкового кута (параметр "поч_кут") до кінцевого кута (параметр "кін_кут") поточним кольором.
FillEllipse(X,Y:integer;Xpaдіyс,Ypaдіус:word) - процедура вичерчує зафарбований еліпс, використовуючи точку з координатами (Х,Y), як центр, а "Храдіус" і "Yрадіус" - у якості радіусів на горизонтальній та вертикальній осях. Контур еліпса креслиться кольором і типом лінії, що встановлені процедурами SetLineStyle і SetColor, тип і колір зафарбування встановлюється за допомогою процедури SetFillStyle.
FloodFill(X,Y,границя:word) - процедура заповнює замкнену область, використовуючи поточний заповнювач, заданий процедурою SetFillStyle. Точка (X,Y) є внутрішньою точкою області, що зафарбовується. Заповнюється область, обмежена лінією, що має колір, визначений параметром "границя". Якщо точка (X,Y) знаходиться усередині замкненої області, то заповнюється внутрішня область. Якщо ця точка знаходиться поза замкненої області, то заповнюється її зовнішня частина (поле екрана, що не належить області).
GetBkColor : word - функція повертає поточне значення кольору тла (у діапазоні 0 - 15), встановлене процедурою SetBkColor.
GetColor : word - функція повертає поточне значення основного кольору малювання (у діапазоні 0 - 15), встановлене раніше процедурою SetColor.
GetMaxColor:word; - функція повертає найбільше значення кольору, яке можна передати процедурі SetColor.
GetMaxX:integer; - функція повертає максимальний для поточного графічного режиму і драйвера номер правого стовпчика (дозвіл по X).
GetMaxY:integer; - функція повертає максимальний для поточного графічного режиму і драйвера номер нижнього рядка екрана (дозвіл по Y).
GetPixel(X,Y:mteger): word; - функція повертає значення (колір) елемента зображення в точці (X, Y).
GetX: integer; - функція повертає Х-координату поточного покажчика СР.
GetY: integer; - функція повертає Y-координату поточного покажчика СР.
GraphResult : integer; - функція повертає код помилки (у діапазоні 0-10) для останньої графічної операції.
InitGraph (Var гр_драйв:integer; Var гр_режим:integer; nyть_дpaйв:string); - процедура ініціалізує графічну систему і переводить апаратну частину в графічний режим.
Line(X1, Y1, X2, Y2 : integer); - процедура вичерчує пряму лінію (товщина і тип якої встановлений процедурою SetLineStyle, колір - процедурою SetColor) із крапки (X1,Y1) у крапку (X2,Y2).
LineRel(Dx,Dy); - процедура вичерчує пряму лінію з точки поточного покажчика СР в точку, задану відносною відстанню (Dx, Dy) від поточного покажчика.
LineTo(X,Y : integer); - процедура малює пряму лінію з точки, у якій знаходиться поточний покажчик СР, у точку з координатами (X,Y).
MoveRel(Dx, Dy : integer); - процедура переміщує покажчик СР з поточної точки у точку, задану відносною відстанню (Dx, Dy).
MoveTo(X, Y : integer); - процедура переміщує поточний покажчик СР у точку з координатами (X,Y).
OutText (рядок : string); - процедура виводить текст "рядка" на монітор, починаючи з точки розташування покажчика СР.
OutTextXY(X, Y: integer; текст_рядок : string); - процедура виводить текст, що міститься у "текст_рядок", починаючи з точки, заданої координатами (X, Y). Якщо рядок занадто довгий і виходить за межі екрана чи поточної області перегляду, то він усікається.
PieSlice (Х, Y: integer; нач_кут, кін_кут R : word); - процедура вичерчує і заповнює поточним кольором сектор кола радіусом R. Точка (X,Y) - центр окружності, а сектор малюється від початкового до кінцевого кута. Тип і колір зафарбування попередньо задається процедурою SetFillStyle.
PutPixel(X, Y: integer; ел_зображ : word); - процедура зафарбовує точку з координатами (X,Y) у колір, що визначається параметром "ел_зображ".
Rectangle(Xl, Yl, Х2, Y2 : integer); - процедура вичерчує прямокутник, використовуючи поточний колір і тип лінії. (X1,Y1) та (X2,Y2) - координати діагонально протилежних вершин прямокутника.
Sector (X, У : integer; поч__кут, кін_кут, Х_Радіус, Y_Радіус : word); - процедура вичерчує і заповнює еліптичний сектор. (Х,Y) - центр окружності, "Х_Радіус", "Y_Радіус" - горизонтальний і вертикальний радіуси. Сектор креслиться від початкового кута "поч_кут" до кінцевого кута "кін_кут". Сектор малюється поточним кольором і зафарбовується з використанням зразка зафарбування і кольорів, заданих за допомогою процедури SetFillStyle.
SetActivePage (сторінка: word); - процедура встановлює для графічного виведення активну сторінку (їх всього чотири від 0 до 3). Графічне виведення буде тепер здійснюватися в цю сторінку.
SetBkColor (колір : word); - процедура встановлює поточний колір для тла.
SelColor(колір : word); - процедура встановлює поточний колір малювання .
SetFillStyle( зразок : word; колір :p word); - процедура встановлює зразок і колір зафарбування для всіх типів зафарбування, виконуваних процедурами Bar, Ваr3D, FillEllipse, FloodFill та PieSlice. Можна використовувати декілька типів зафарбування (наприклад, 1 - суцільне фарбування, 2 - штрихування лініями, 7 - штрихування символом "+", 11 - штрихування крапками тощо). За замовчуванням вибирається суцільне зафарбування білого кольору.
SetLineStyle(тип_рядка :word; зразок: word; товщина : word); - процедура встановлює поточну товщину і тип лінії.
SetTextJustify(ropиз, верт : word); - процедура встановлює значення вирівнювання тексту, що використовуються процедурами OutText і OutTextXY.
SetTextStyle (шрифт: word; направл: word; розм_символу: CharSize-турі); - процедура встановлює поточний шрифт, тип і коефіцієнт розміру символу.
SetViewport(XI, Y1, X1, X2 word, clip: boolean); - процедура встановлює для графічного поточного виведення чи перегляду вікно, де (X1,Y1) - верхній лівий кут області перегляду, (X2,Y2) - нижній правий кут. Процедура переміщує поточний покажчик у точку з координатами (0,0). Clip - булівська змінна.
SetVisualPage (сторінка : word); - процедура задає номер відображуваної графічної сторінки.
TextHeight(mekcm_рядок: string) : word; - функція повертає висоту рядка в елементах зображення.
TextWidth(текст_рядок : string) : word; - функція повертає ширину рядка в елементах зображення.
Приклад програми
Program Graphika;
uses crt,graph;
var i,gd,gm,x1,x2,y1,y2:integer;
begin
gd:=detect;
InitGraph(gd,gm,'D:\tp7');
x1:=100;
y1:=100;
X2:=200;
y2:=200;
Randomize;
{Пpогpамний блок який вiдповiдає за малювання та pух пpямокутника}
For i:=1 to 100 do {Виконується за допомогою цикла пеpелiка}
begin
SetColor(Random(15)); { Задає колip }
Setlinestyle(0,0,3); { Задає тип лiнiй }
Rectangle(x1,y1,x2,y2); { Малює пpямокутник }
delay(5555); { Затpимка екpана }
SetColor(0);
Rectangle(x1,y1,x2,y2); { Зафаpбовування кольоpом фона }
x1:=x1+random(5);
x2:=x2+random(5); { Зсув кооpдинат }
y1:=y1+random(5); { Робиться випадково }
y2:=y2+random(5);
end;
end.
Результат виконання програми.
Програма виводить на екран дисплея прямокутник, який рухається по діагоналі з верхнього лівого кута в нижній правий.
При чому колір і розмір прямокутника постійно змінюються в довільно заданих координатах.