3.2 Системні вимоги
Для зручного використання програми бажано мати наступну конфігурацію системи:
-
Процесор Intel Pentium 2 або вище
-
Оперативна пам’ять 32 Мб або вище
-
1-2 Мб вільного місця на жорсткому диску
-
Клавіатура
-
Мишка
-
Монітор
3.3 Опис процедур
begin
config_graph;
SetBkColor(0);
SetColor(fon_clr);
Rectangle(scr_x, scr_y, scr_x+x+60, scr_y+y+50);
SetFillStyle(1, fon_clr);
FloodFill(scr_x+2, scr_y+2, fon_clr);
mouse_x_:=mouse_x;
color:=0;
oper:=99;
scr_x:=50;
scr_y:=50;
size_cur:=15;
dos_4:=False;
stena;
menu_oper(True, True, 1, 10, 20, 50);
menu_color(True);
out_text(7, 7);
save_blocks;
while key_prs <> esc do begin
on_mouse;
krd_mouse;
menu_oper(False, True, 1, 10, 20, 50);
menu_color(False);
Drow;
if(KeyPressed = True)then key_prs:=readkey;
up_bar;
end;
closegraph;
end.
Це являється головним кодом програми . Спочатку ми встановлюємо графічний режим процедурою config_graph. Потім будуємо інтерфейс та встановлюємо початкові конфігурації.
Потім заходимо в цикл виводимо мишку на екран on_mouse. Потім виводимо курсор миші. Підключаємо процедуру даних координат миші. Потім інсталюємо меню кольорів menu_color та операцій menu_oper. Потім йде головний оброблювальна процедура Drow.В цій процедурі написаний код для малювання та зберігання. Потім ми зчитуємо код клавіші якщо вона нажата.
Підключаємо довідка і вихід up_bar.А якщо цикл закінчується , а він закінчується коли
key_prs = esc, тоді закриваємо графічний режим і виходимо.
procedure config_graph;
Ось тут ми інсталюємо графічний режим initgraph. Командою getdir ми пізнаємо який текучій каталог і розміщуємо в перемінну dir.
procedure krd_mouse;
Ця процедура виводить дані координати миші. Якщо координати миші міняються тоді ми процедурою видаляємо старі координати процедурою del_grp і виводимо нові координати.
А якщо мишка не входить в графічне вікно то тоді координати видаляються.
procedure del_grp(d_x, d_y, d_x_, d_y_, col_del:integer);
А ця процедура розроблення для видалення квадратиком. Спочатку ми вводимо координати початкового лівого верхнього кутка d_x, d_y, d_x_ і правого нижнього кутка d_x_, d_y_.
А потім просто встановлюємо яким кольором ми будемо його заповняти col_del.
procedure menu_oper(zx, on_k:boolean; lin, lim, o_x, o_y:integer);
Ця процедурою є вибір тих операцій яких нам потрібні для малювання. Спочатку ми встановлюємо такі значення як:
-
Zx – значення True показати кнопочки, False – заховати кнопки
-
on_k - значення True дає доступ для включення кнопок, False – вимкнути кнопки
-
lin – починати показувати з n – кнопок
-
lim – закінчити показувати до n – кнопок
-
o_x, o_y – координати виводу по x та y
В цій процедурі можна обрати яку операцію будемо використовувати в графічному вікні(редакторі) .
procedure menu_color(on:boolean);
Ця процедура дає змогу обрати колір. Тип кольору вір розміщує в переміну color.
procedure save_blocks;
procedure open_blocks;
Ці процедури зберігають в буфер та відкривають тартинку та що знаходиться в графічному вікні редакторі.
Воно зберігається в два блоки та і аналогічно виводить в двох блоках.
procedure naw_color(col:byte);
Виводить даний колір який буде розміщений в перемінної col.
procedure stena;
Воно встановлює фон програми.
procedure Drow;
Ця процедура являється одна із головних. С допомогою цієї процедурі ми редагуємо малюнок, тобто виконуємо ті операції які будуть вибрані в процедурі menu_oper.
procedure up_bar;
Тут ми виводимо в верхньому лівому кутку Вихід та Довідку.
procedure about;
Це є довідку тут ми вводимо в таблицю case саму довідку.
procedure button_f(p_x, p_y, p_x_, p_y_,
В цій процедурі ми виводимо кнопку
-
p_x, p_y, p_x_, p_y_ - координати лівого верхнього та правого нижнього кутка.
-
col_p – колір заповнення кнопки.
-
p_text – текст, назва кнопки.
procedure out_text(col_ex, col_sp:integer);
Ми виводимо текст фону.
procedure sleep_mouse;
Ця процедура дає змогу зробити паузу. Тобто цикл не закінчиться доки не нажата кнопки миші.
procedure menu_vol;
В цій процедурі ми вводимо діаметр кола гумки на олівця.
procedure open_mblocks(om_x, om_y:integer);
procedure save_mblocks(sm_x, sm_y, sm_x_, sm_y_:integer);
Ці процедури save_mblocks - зберігають в буфер та open_mblocks - відкривають картинку яка буде задано по координатам sm_x, sm_y, sm_x_, sm_y_.
procedure window(w_x, w_y, w_x_, w_y_, w_col:integer);
Ця процедура призначена для виводу графічного вікна. Вона використовується там де довідка, зберегти та інше.
procedure cnf_delete_f(x1, y1, x2, y2:integer);
Ці процедури призначені для швидкого видалення картинки, тому що процедура
del_grp тільки заповнює і це не є швидко. А тут ми сразу видалюємо. В процедурі cnf_delete_f ми встановлюємо де ми будемо видаляти. А процедура delete_f видаляє те які координати встановили в процедурі delete_f.
procedure Fil_op(txt:boolean);
Ця процедура призначена для зберігання та відкриття .BMP файла.
В перемінної txt ми встановлюємо те що ми будемо робити, зберегти чи відкрити. Значення True – зберегти, значення False – відкрити.
procedure open_proc(opr:string);
Ця процедура відкриває .BMP файл. В переміна opr є назва файлу. Путь к файлу встановлювати не треба, тому що ми до цього встановлюємо даний каталог, який мо встановлюємо в провіднику Fil_op. Тут обов’язково треба визначити розмір картинки для того щоб правильно відкрити файл.
procedure save_proc(spr:string);
В цій процедурі ми зберігаємо в файл картинку та що знаходиться в реактивному вікні через команду getpixel. Конфігурацію картинки ми вводимо статичну оскільки ми зберігаємо ту саму картинку з одноковими параметрами і з тим же розміром.
procedure error_bmp(ach, eror:integer);
Цю процедуру ми підключаємо до процедурі open_proc тут ми впізнаємо чи є файл BMP картинка, та чи є картинка 16 – кольорова.
function case_color(cc:integer):integer;
В цій функції ми конвертуємо кольори. Тому що код кольору BMP картинки не співпадає з кодом кольору самого Паскаля.
procedure out_disk(dk_x, dk_y:integer);
В цій процедурі ми визначаємо які логічні диски є на комп’ютері. А робимо це так спочатку ми дивимося скільки вільного місця на диску 'A' до 'Z'.
Якщо вільне місце є тоді ми одержуємо значення більше чим -1 і це є дійсний логічний диск. І тут же ми стразу виводимо на екран які логічні диски на комп’ютері існують.
procedure curlop(cur_nal, cur_kon, cur_col, cur_col_:integer);
Ось тут ми визначаю тип раз положення повзунка ми вводимо такі дані:
-
cur_nal – скільки файлів взагалі
-
cur_kon – на якому даному файлі ми знаходимося
-
cur_col – встановлюємо колір верхньої стрілки(використаємо коли ми нажимаємо на стрілку)
-
cur_col_ – встановлюємо колір нижньої стрілки(використаємо коли ми нажимаємо на стрілку)
Ми встановлюємо повзуном по процентом яких вводимо cur_nal, cur_kon.
procedure up_fil(uf_col:integer);
Ца процедура являється стрілкою коли ми піднімаємося па одну папку вгору.
ВИСНОВКИ
Під час виконання курсової роботи вдосконалив свої теоритичні знання з графіки в Pascal на практиці. Створений графічний редактор буде мати незвичний вигляд порівняно з редакторами, які розроблені об’єктно-процедурними мовами. В моїй програмі є ті самі функції, що й у інших графічних редакторах, такі як: лінії, кружечки, квадратики, гумка, заливка та команда назад. Якщо ми намалюємо якусь картинку, то при виході з програми вона пропаде, тому я розібрався як працює BMP(Bitmap Picture)файл і доробив дві команди:
-
картинка зберігається у форматі BMP(Bitmap Picture), але тільки 16 – кольорове зображення. Я підключав графічний драйвер для 256 – кольорового зображення але щоб збереження зображення в 256 – кольорах треба було ще багато чого доробити. Я хотів це зробити але вже не було часу.
-
відкриває 16 – кольорове зображення.
Також програма перевіряє чи є картинка 16 – кольорова. Ну і саме головне чи є зображення в BMP форматі.
Розібрався як сконструйований BMP(Bitmap Picture) файл та як його вивести на екран в графічному режимі.
Звичайно, запропонований мною варіант графічного редактора можна вдосконалити. Наприклад, додати декілька нових функцій: кисть, розпилювач, нові фігури, напис та можливість редагувати текст, додати більшу палітру кольорів, функцію копіювання в буфер обміну фрагмент чи весь малюнок, а також можливість масштабування.