пʼятниця, 7 лютого 2014 р.

Графічні можливості мови програмування PascalABC

Основні поняття
Зображення на екрані монітора формується з точок, які називають пікселями. Кожна точка має свої властивості, які визначають її положення на екрані (координати) та колір. В якості координат виступають порядкові номера пікселів по горизонталі та вертикалі, координати задаються тільки цілими числами. Початок координат знаходиться в лівому верхньому куті екрана. Значення горизонтальної координати (абсциси) відраховується зліва на право, а значення вертикальної координати (ординати) – зверху вниз.
При створенні малюнка засобами мови програмування PascalABC формується векторне зображення, яке складається з простих графічних фігур – так званих графічних примітивів (точка, відрізок, прямокутник, коло, овал).
Для створення графічного об'єкта потрібно підключити модуль в якому описано всі команди для створення і обробки графічних зображень. Всі ці команди знаходяться в спеціальній бібліотеці, яка має назву GraphABC. Дана бібліотека підключається в описовій частині програми в розділі а Uses.
При створені графічного зображення перше, що потрібно зробити, це задати розміри графічного вікна в якому буде виведено зображення. Розміри вікна задаються відповідною командою SetWindowSize(w,h), яка містить в собі максимальне значення пікселів по горизонталі – w та вертикалі – h.
Основними інструментами створення графічних об'єктів є олівець та пензель, які позначаються певними командами модуля GraphABC. За допомогою олівця малюють ліній та контури фігур, за допомогою пензля відбувається фарбування обмеженої лініями області графічного вікна.
Команда
Призначення команди
setPenWidth(n); Встановлює товщину олівця в пікселях, де n – ціле число
setPenColor(cl);
Встановлює колір олівця, де cl – константа, яка задає колір
SetPenStyle(ps);
Встановлює стиль лінії олівця, де ps – ціле число від 0 до 4
SetBrushColor(cl);
Встановлює колір пензля, де cl – константа, яка задає колір
SetBrushStyle(bs);
Встановлює стиль пензля, де bs – константа, яка задає стиль
SetBrushPicture (fname);
Встановлює в якості зразка для зафарбовування пензлем графічне зображення, яке зберігається в файлі з назвою fname
При роботі з графічним вікном, для виведення в нього текстових повідомлень необхідно підключити модуль CRT. Даний модуль містить команди,  які дають можливість виводити текстові повідомлень в графічному вікні. Модуль підключається в розділі Uses разом з модулем GraphABC, які записуються через кому за необхідності також в даному розділі підключаються інші модулі, навіть створені користувачем. Замість константи cl, яка задає колір можна використовувати процедуру RGB(r,g,b), де r,g,b – числові значення стандартних кольорів (червоний, зелений, синій) від 0 до 255.
Константа
Колір
Константа
Колір
clBlack
чорний
clAqua
бірюзовий
clPurple
фіолетовий
clCream
кремовий
clWhite
білий
clOlive
оливковий
clMaroon
темно-червоний
clFuchsia
бузковий
clRed
червоний
clTeal
синє-зелений
clNavy
темно-синій
clGray
зелений
clGreen
зелений
clLime
світло-зелений
clBrown
коричневий
clLtGray
світло-сірий
clBlue
синій
clDarkGray
темно-сірий
clSkyBlue
голубий
clMedGray
сірий
clYellow
жовтий
clSilver
серебряний
Константа
Стиль
Константа
Стиль
bsSolid
суцільне заповнення вибраним кольором
bsCross
заповнення клітинками
bsClear
заповнення прозорим кольором
bsDiagCross
заповнення діагональними клітинками
bsHorizontal
заповнення горизонтальними лініями
bsBDiagonal
заповнення діагональними лініями //
bsVertical
заповнення вертикальними лініями
bsFDiagonal
Заповнення діагональними лініями \\
Команда
Дія
SetWindowSize(w,h: integer);
Задає ширину та висоту графічного вікна
SetWindowCaption(s: string);
Встановлює назву графічного вікна, яке задається змінною s
SaveWindow(fname: string);
Зберігає вміст графічного вікна в файл із назвою fname
LoadWindow(fname:
string);
Завантажує в графічне вікно малюнок, який зберігається в файлі з назвою fname (формати файлів повинні бути bmp, jpg або gif), назва файлу заключається в одинарні лапки
ClearWindow;
Очищує графічне вікно і встановлює білий фон вікна
ClearWindow(c:
ColorType);
Очищує графічне вікно і встановлює фон вікна заданим кольором с
Redraw;
Перерисовує вміст графічного вікна
Команда
Дія
SetPixel(x,y,color:
integer);
Зафарбовує один піксель з координатами (х,у) кольором color
MoveTo(x,y: integer);
Переміщує невидимий олівець в точку з координатами (х,у); працює в парі з командою LineTo(x,y);
LineTo(x,y: integer);
Малює лінію від поточних координат олівця до точки з координатами (х,у), при цьому координати олівця стають рівними (х,у)
Line(x1,y1,x2,y2:
integer);
Малює відрізок з початком в точці з координатами (х1,у1) та кінцем в точці з координатами (х2,у2)
Circle(x,y,r: integer);
Малює коло з центром в точці з координатами (х,у) та радіусом r – одиницею вимірювання радіуса є піксель
Ellipse(x1,y1,x2,y2:
integer);
Малює овал який вписаний в невидимий прямокутник, де (х1,у1) та (х2,у2) – координати початку та кінця діагоналі прямокутника
Rectangle(x1,y1,x2,y2:
integer);
Малює прямокутник, де (х1,у1) та (х2,у2) – координати початку та кінця діагоналі прямокутника
Arc(x,y,r,a1,a2:
integer);
Малює дугу кола з центром в точці з координатами (х,у) та радіусом r, яка обмежена двома променями, що утворюють кути а1 та а2 з віссю абсцис ОХ, кути задаються в градусах, відлік відбувається проти годинникової стрілки
Pie(x,y,r,a1,a2:
integer);
Малює сектор круга обмежений дугою кола з координатами (х,у) та радіусом r, яка обмежена двома променями, що утворюють кути а1 та а2 з віссю абсцис ОХ, кути задаються в градусах, відлік відбувається проти годинникової стрілки
FloodFill(x,y,color:
integer);
Зафарбовує обмежену лініями область графічного зображення вказаним кольором color, починаючи з точки з координатами (х,у), яка повинна знаходитись в середині зафарбовуваної області
TextOut(x,y: integer; s:string);
Виводить рядок символів s з точки (х,у), точка (х,у) – задає координати лівого верхнього кута прямокутника в якому виводиться рядок символів
Команда
Дія
SetFontColor(cl);
Встановлює колір олівця, де cl – константа, яка задає колір
SetFontSize(sz: integer);
Встановлює розміри шрифту в пунктах, szцілочисленне значення
SetFontName(shf: string);
Задає шрифт, де shfназва шрифту (MS Sans Serif – шрифт який використовується за замовчуванням; Times, Arial та Courier New – шрифти, які найчастіше використовують)
SetFontStyle(fs);
Встановлює стиль шрифту, де fs – константа, яка задає стиль
Константа
Стиль
Константа
Стиль
fsNormal
звичайний
fsUnderline
підкреслений
fsBold
жирний
fsBoldUnderline
жирний підкреслений
fsItalic
курсив
fsItalicUnderline
підкреслений курсив
fsBoldItalic
жирний курсив
fsBoldItalicUnderline
жирний підкреслений курсив
Команда
Дія
LoadPicture(fname:
string): integer;
Завантажує в пам'ять комп'ютера малюнок, який зберігається в файлі з назвою fname (формати файлів повинні бути bmp, jpg, png або gif) та присвоює його деякому цілочисленному ідентифікатору m: m:=LoadPicture(fname); назва файлу заключається в одинарні лапки
DrawPicture(m,x,y:
integer);
Виводить завантажений графічний файл, який присвоєний ідентифікатору m в позицію з координатами (х,у) – верхній лівий кут прямокутної області в якій виводиться зображення завантажене з графічного файлу
DrawPicture(m,x,y,w,h:
integer);
Виводить завантажений графічний файл, який присвоєний ідентифікатору m в позицію з координатами (х,у) – верхній лівий кут прямокутної області в якій виводиться зображення завантажене з графічного файлу, w, h – відповідно ширина та висота прямокутної області в пікселях, малюнок масштабується для виведення в заданій області
SavePicture(m: integer;
fname:string);
Зберігає малюнок, який зв'язаний з ідентифікатором m в файл, ім'я якого представлено рядком символів fname (формати файлів мають бути bmp, jpg або gif)
SetPictureSize(m,w,h:
integer);
Встановлює розміри малюнка зв'язаного з ідентифікатором m, w – ширина та h – висота відповідно в пікселях
SetPictureTransparent (m:integer; b: boolean);
Встановлює якщо (b=True) або вимикає коли (b=False) режим прозорості при виведенні в графічному вікні малюнка зв'язаного з ідентифікатором m


Приклади роботи з графічними зображеннями

Приклад. Вивести в графічному вікні розмірами 640 на 480 пікселів, зображення основних графічних фігур (прямокутник, коло, овал, сектор) трикутника, дугу кінці якої з'єднані відрізком та зафарбувати їх різними кольорами та стилями. Над фігурами вивести напис "Геометричні фігури в PascalABC" та вивести даний напис в заголовку графічного вікна.
program qpirypu;
uses graphABC; {підключення графічного модуля}
begin
  setWindowSize(640,480);     {задається графічне вікно та його розміри}
  SetWindowCaption('Геометричні фігури в PascslABC');{назва графічного вікна}
  setFontSize(15);            {розміри шрифтa}
  setFontStyle(fsBold);       {встановлює напівжирний стиль шрифтa}
  setFontColor(clBrown);      {встановлює колір шрифта}
  setBrushColor(clLtGray);    {встановлює колір фону на якому виводиться текст}
  textOut(130,10,'Гeометричні фігури в PascslABC');  {виведення тексту}
  setPenWidth(3);             {товщина олівця}
  setPenColor(clBrown);       {колір олівця}
  setBrushColor(clYellow);    {колір пензля}
  SetBrushStyle(bsSolid);     {встановлює стиль зафарбовування – суцільний}
  rectangle(40,80,200,160);   {прямокутник}
  setPenColor(clRed);  setBrushColor(clAqua);
  SetBrushStyle(bsClear);     {встановлює стиль зафарбовування – прозорий}
  circle(300,120,40);         {круг}
  setPenColor(clBlue);  setBrushColor(clRed);
  SetBrushStyle(bsHorizontal);{встановлює стиль зафарбовування – горизонтальні лінії}
  ellipse(400,80,540,160);       {овал}
  setPenColor(clFuchsia);  setBrushColor(clLime);
  SetBrushStyle(bsVertical);     {встановлює стиль зафарбовування – вертикальні лінії}
  Pie(100,300,100,45,130);       {сектор}
  setPenColor(clSilver);
  SetBrushStyle(bsCross);        {встановлює стиль зафарбовування – клітинами}
  Arc(300,300,100,45,190);       {дуга}
  Line(369,229,203,316);         {відрізок}
  FloodFill(220,290,clOlive);    {зафарбовує обмежену дугою та відрізком область}
  setPenColor(clNavy);
  SetBrushStyle(bsBDiagonal);{встановлює стиль зафарбовування – діагональними лініями}
  MoveTo(400,310); {встановлює графічний курсор в точку з вказаними координатами}
  LineTo(450,200); {малює лінію з останньої позиції курсора до точки з координатами}
  LineTo(500,310);  {малює лінію з останньої позиції курсора до точки з координатами}
  LineTo(400,310);  {малює лінію з останньої позиції курсора до точки з координатами}
  FloodFill(450,300,clSkyBlue);  {зафарбовує обмежену відрізками область}
end.

Немає коментарів:

Дописати коментар