Найпростіший графічний редактор h2>
Володимир Коробицын p>
Реакція програми на різні кнопки миші.
Побудова системи меню. Управління принтером h2>
Розглянемо
деякі графічні можливості на прикладі побудови програми «Альбом для
малювання ». p>
На
стартовою формі Form1 розмістіть компонент Image1 з вкладки Additional. У
компонента Form1 для його властивості Color встановіть значення clWhite (Цвет
білий). Властивості Caption цього елемента, встановіть значення «Альбом для
малювання ». У функцію обробки FormMouseDown (При натисканні кнопки миші)
запишіть рядок: p>
Image1-> Canvas-> LineTo (X, Y);// малювати лінію p>
Canvas
(канва, полотно) - це властивість компонента Image, що представляє із себе
поверхню для виводу графіки. На цій поверхні метод LineTo (Лінія в)
буде викреслювати пряму лінію від точки поточної позиції в точку з координатами,
де опиниться курсор при натисканні кнопки миші. Запустіть програму, порісуйте
мишкою. Очевидний недолік такого малювання - ви не можете поставити початкову
точку траєкторії руху олівця! Для вирішення цієї проблеми використовуємо
метод MoveTo (Переміщення в), який буде в роботі програми переміщати
поточну крапку в нову позицію без малювання лінії. Виникає інша проблема --
як за допомогою миші користувач зможе повідомити: малювати далі або почати з
нової позиції? Благо, що мишка має як мінімум дві кнопки. Навчимо додаток
відчувати різницю між лівою і правою кнопками миші. Для цього доведеться
функцію обробки FormMouseDown трохи ускладнити: p>
if
(Button == mbLeft) Image1-> Canvas-> LineTo (X, Y); p>
if (Button == mbRight)
Image1-> Canvas-> MoveTo (X, Y); p>
Button
- Кнопка миші. Перша умова if (якщо) дозволяє лівій кнопці миші малювати
лінію. Друга умова дозволяє правій кнопці перенести точку малювання в нову
позицію. Подивіться, як тепер працює програма. P>
Поки
в розпорядженні користувача єдиний колір олівця. Розширимо можливості
додатки. Вибрати з палітри компонентів у вкладці Standard компонент MainMenu
(Система меню) і розмістіть його на формі під ім'ям MainMenu1, запропонованому
середовищем C + + Builder за замовчуванням. Клацніть по цьому об'єкту мишкою два рази:
з'явиться вікно, що імітує вигляд форми з майбутньою системою меню, це і є
наочний редактор меню. На початку редактор покаже один прямокутник-заготовку
пункту меню. Для перетворення заготовки на робочий пункт меню потрібно властивості
Caption надати значення довільного необхідного назви, наприклад, «Файл».
Після цього внизу з'явиться прямокутник першої команди меню, а праворуч
прямокутник наступного пункту меню. Побудуйте систему меню, так як показано
на малюнках. Будь-яка команда може викликати вторинне (дочірнє) меню. Щоб
вибудувати вторинне меню клацніть по необхідній команді, потім відпрацюйте клавішний
акорд Ctrl + Right (Одночасне натискання Ctrl і курсору «Вправо»). Для того
щоб ця система меню запрацювала, необхідно написати функції обробки
подій натискання на пункти і команди меню. p>
Почнемо
з написання функції обробки команди меню «Колір малювання». Для цього в режимі
створення програми клацніть мишею по пункту меню «Режим», а потім по команді
цього пункту «Колір малювання». У вікні редагування програмного коду з'явиться
заготівля функції обробки команди меню «Колір малювання». Наповніть цю
функцію обробки програмним кодом: p>
// виклик
вікна діалогу КОЛІР для вибору кольору малювання p>
ColorDialog1-> Execute (); p>
// передача
кольору перу полотна з вікна діалогу КОЛІР p>
Image1-> Canvas-> Pen-> Color
= ColorDialog1-> Color; p>
Pen
(Перо) - властивість поверхні Canvas. Color (Колір), це властивість об'єкту Pen.
Запустіть програму на виконання і порісуйте різними кольорами. Тепер у
розпорядженні користувача палітра з величезною кількістю квітів. Це число
обмежується тільки можливістю відеокарти вашого комп'ютера. Якщо
відеокарта 16-бітна, то глибина кольору на екрані дисплея становить 16 біт, а
кількість можливих кольорів одно 216 = 65 536. Сучасні відеокарти
є, як правило, 32-бітними, тому число можливих кольорів виявляється
рівним 232 = 4 294 967 296. p>
Команда
«Товщина лінії» меню «Режим» дозволить користувачеві змінювати товщину сліду
малювання. Ця команда буде викликати вторинне (дочірнє) меню, що містить
команди які визначають розмір сліду малювання. Команди вторинного меню мають назви
«1», «2», «5», «10» і «20». Клацніть, наприклад, на команду «5» і що з'явилася
заготівлю функції обробки запишіть інструкцію: p>
Image1-> Canvas-> Pen-> Width
= 5;// задати ширину пера рівну п'яти p>
Тут
Width (Ширина), це властивість об'єкту Pen. Решта команди вторинного меню
пожвавите аналогічними інструкціями. Тепер процес малювання стане цікавіше.
Намагайтеся використовувати нові можливості програми. P>
Обробіть
команду «Зберегти» меню «Файл» для можливості запису малюнка на диск в
графічний файл. Функція обробки цієї команди може виглядати так: p>
// виклик
вікна діалогу ЗАПИС Графічні файли p>
SavePictureDialog1-> Execute (); p>
// зображення
з поля Image1 записати у файл p>
Image1-> Picture-> p>
SaveToFile (SavePictureDialog1-> FileName
+ ". Bmp "); p>
SaveToFile
(Зберегти у файл) - функція, що дозволяє записувати різного роду інформацію на
диск, у даному випадку - графічну. Запустіть програму. Намалюйте що-небудь.
Збережіть ваш малюнок на потрібний диск у вибрану папку. P>
Обробіть
наступну команду меню «Файл» - «Відкрити». Ця команда дозволить користувачеві
вважати з диска свій чи чужий малюнок, для перегляду або редагування.
Функція обробки цієї команди меню може містити програмний код: p>
// виклик
вікна діалогу ВІДКРИТТЯ Графічні файли p>
OpenPictureDialog1-> Execute (); p>
if (OpenPictureDialog1-> FileName
! = "")// Якщо у вікні діалогу є файл p>
( p>
// завантаження
файлу в полі Image1 з диска p>
Image1-> Picture-> LoadFromFile (OpenPictureDialog1-> FileName); p>
// ширину
Image1 зрівняти з шириною завантаження зображення p>
Image1-> Width =
Image1-> Picture-> Width; p>
// висоту
Image1 зрівняти з висотою завантаження зображення p>
Image1-> Height =
Image1-> Picture-> Height; p>
) p>
Складовою
знак «! =» означає - «не дорівнює». Дві поруч розташовані лапки означають
порожня множина. Умова if (якщо) перевіряє наявність файлу в полі вікна діалогу
«Відкриття графічного файла». Якщо умова виконується, йде завантаження файла і
центрування зображення на екрані, інакше інструкції в фігурних дужках НЕ
виконуються. Функція LoadFromFile (Завантажити з файлу) дозволяє зчитувати
інформацію з диска. Перевірте працездатність новоствореної команди меню. P>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://bc.boom.ru/
p>