
Лабораторна робота № 8 Робота з текстом у графічному режимі
Для висновку тексту на екран в об'єкта TCanvas є метод TextOut. У цього методу три параметри:
1. Х позиція тексту;
2. Y позиція тексту;
3. Безпосередньо рядок тексту, який треба вивести.
Створіть новий додаток і по події OnPaint напишіть:
За стиль шрифту відповідає властивість Font об'єкта TCanvas. Це властивість теж має об'єктний тип (TFont), у якого дуже багато властивостей. Серед них, звичайно ж, є і властивість Color.
Встановіть на форму кнопку і ColorDialog, щоб можна було змінювати колір тексту.
По події OnClick для кнопки пишемо наступне:
Відкоригуйте подію OnPaint:
Установите на форму компонентів FontDialog із закладки Dialogs. Це майже такий же компонент, як ми використовували для зміни кольору, тільки тут буде з'являтися стандартне вікно зміни шрифту.
Додайте на форму кнопку з написом «Змінити шрифт» і по її натисканню напишіть наступне:
У першому рядку ми показуємо вікно зміни шрифту так само, як це робилося для зміни кольору. Якщо користувач вибрав шрифт і натиснув «ОК», то ми встановлюємо його властивості Font об'єкта Canvas. Після цього ми указуємо формі обновити свій вміст. При новому промальовуванні вмісту форми, текст уже виводитися з новим шрифтом.
Єдиний недолік цього приклада – якщо спочатку вибрати великий шрифт, а потім маленький, те старий вміст тексту, написаного великим шрифтом, не знищується, а новий малюється поверх старого. Самий найпростіший спосіб позбутися від такого небажаного ефекту – після зміни шрифту замість прямого виклику функції FormPaint(nil) використовувати виклик методу форми Repaint чи Invalidate. Другий метод Invalidate змушує промальовуватися цілком усе вікно, а не тільки його вміст.
Робота з кольором
У комп'ютерній графіці колір представляється трьома складовими червоного, зеленого і блакитного (RGB). У різних пропорціях, з цих трьох кольорів можна одержати будь-який іншої. Наприклад, якщо взяти червоного і зеленого по максимуму, а синього взагалі не брати, те вийти жовтий колір.
Один байт може приймати значення від 0 до 255 (у десятковій формі) чи від 0 до FF (у шістнадцятковій). Так що в шістнадцятковій формі колір буде виглядати як $00FFFFFF. Тільки отут відразу треба відзначити, що перші два нулі – це зайвий байт, потім йдуть FF для блакитного кольору, потім FF для зеленого й останні FF для червоного. Виходить, що в пам'яті колір зберігатися як BGR (у зворотному порядку). Абсолютно червоний колір буде дорівнює $000000FF, абсолютно зелений = $0000FF00, а синій - $00FF0000.
Створіть новий додаток і установите на нього компоненти так, як показано на малюнку
По
По натисканню кнопки пишемо наступний код:
По події OnPaint напишемо наступний код:
Створимо обработчик події OnChange для всіх рядків. Виділите спочатку рядок вводу для червоного кольору, потім утримуючи Shift клацніть по іншим. Повинні бути виділені всі рядки введення сірими рамками.
Тепер перейдіть в об'єктному інспекторі на закладку Events і двічі клацніть по OnChange, щоб створити оброблювач. У ньому напишіть:
Спробуйте запустити цей приклад. Тепер виберіть який-небудь колір, і побачите складові цього кольори. Можна навіть прямо змінювати значення в рядках вводу, і результат моментально буде відбиватися на кольорі прямокутника. Тільки помнете, ні
одна зі складових не може бути більше 255.