браження копіюється на канву в область, з координатами лівого верхнього кута (10,10). Після цього тимчасовий об'єкт
BitMap знищується. p> Запустіть ваш додаток і клацніть на його кнопці. Ви побачите, що можете завантажити будь-який графічний файл типу.
Bmp і він відобразиться на канві форми (див. рис.4.2 а). Графічні файли ви можете знайти в каталозі Images. У Delphi 5 і 4 він зазвичай розташований в каталозі. Program files Common Files Borland Shared. У Delphi 3 він розташований в каталозі. Program files Borland Delphi 3, а в Delphi 1 - в каталозі Delphi 16. У каталозі Images мається, зокрема, підкаталог Images Splash 16Color , в якому зберігається файл, завантажений у прикладі рис.4.2
Рис.4.2 Зображення на канві графічного файлу (а) і його стирання (б) при перекритті іншим вікном) б)
Ви створили непогане додаток для перегляду графічних файлів. Але тепер давайте спробуємо побачити його великий недолік. Не закриваючи свого додатку, перейдіть в яку-небудь іншу програму, наприклад, поверніться в Delphi. Потім, нічого там не роблячи, знову перейдіть в своє що виконується додаток. Якщо вікно програми, в яку ви йшли, цілком перекрило вікно вашої програми, то повернувшись до нього ви побачите, що картинка у вікні зникла. Якщо ж вікно вашої програми перекривався тільки частково, то повернувшись в свій додаток ви, можливо, побачите результат, подібний представленому на рис.4.2 б. p align="justify"> Ви бачите, що якщо вікно якогось іншого додатка перекриває на час вікно вашої програми, то зображення, намальоване на канві форми, псується. Подивимося, як можна усунути цей недолік. p align="justify"> Якщо вікно було перекрито і зображення зіпсувалося, операційна система повідомляє додатком, що в оточенні щось змінилося і що додаток повинен вжити відповідні дії. Як тільки потрібно оновлення вікна, для нього генерується подія OnPaint . У обробнику цієї події (у нашому випадку події форми) потрібно перемалювати зображення.
Перемальовування може проводитися різними способами в залежності від програми. У нашому прикладі можна було б винести оголошення змінної BitMap (оператор var < span align = "justify"> BitMap: TBitMap) за межі наведеної вище процедури, тобто зробити цю змінну глобальної, розмістивши безпосередньо в розділі implementation . Оператор BitMap. Free можна було б перенести в обробник події форми OnDestroy , що відбувається в момент закриття програми. Тоді протягом усього часу виконання вашої програми ви будете мати копію картинки в компоненті BitMap і вам досить ввести в обробник події OnPaint форми всього один оператор:
. Draw (10, 10, BitMap);
Зробіть це, і побачите, що зображення на формі не псується при будь-яких перекриттях вікон.
Крім розглянутого методу Draw канва має ще метод копіювання CopyRect :
CopyRect (Dest: TRect; Canvas: TCanvas; Source: TRect);
Метод копіює зазначену параметром Source область зображення в канві джерела зображення Canvas у вказану параметром Dest область даної канви. Тип TRect , що характеризує прямокутні області Source і Dest , вже описувався в розділі 3.2 . p> Наприклад, оператор
. CopyRect (MyRect2, Bitmap. Canvas, MyRect1);
копіює на канву форми в область MyRect2 зображення з області MyRect1 канви компонента Bitmap .
Копіювання методом CopyRect проводиться в режимі, встановленому властивістю CopyMode . За умовчанням це властивість має значення cmSrcCopy , що означає просто заміну зображення, що міститься раніше в області Dest , на копируемое зображення. Інші можливі значення CopyMode дозволяють комбінувати зображення, але їх розгляд виходить за рамки цієї книги. p> Цими основними відомостями про виведення графічної інформації на канву ми обмежимося. У розділі 3.2 були повідомлені відомості про виведення на канву тексту. У цілому ж канва - складний об'єкт, що володіє ще багатьма властивостями і методами. Але це вимагає розгорнутого обговорення, що виходить за рамки цієї книги. У наступній книз...