Найбільш просто вивести ілюстрацію, яка знаходиться у файлі з розширенням bmp, jpg або ico, можна за допомогою компонента image, значок якого знаходиться на вкладці Additional палітри (рис. 10.11).
Рис. 10.11. Значок компонента Image
У табл. 10.8 перераховані основні властивості компонента image.
Таблиця 10.8. Властивості компонента image
Властивість | Визначає |
Picture | Ілюстрацію, яка відображається в поле компонента |
Width, Height | Розмір компонента. якщо розмір компонента менше розміру ілюстрації, і значення властивостей AutoSize і strech одно False, то відображається частина ілюстрації |
AutoSize | Ознака автоматичного зміни розміру компонента відповідно до реального розміром ілюстрації |
Strech | Ознака автоматичного масштабування ілюстрації відповідно до реального розміром компонента. Щоб було виконано масштабування, значення властивості AutoSize має бути False |
Visible | Чи відображається компонент, і, відповідно, ілюстрація, на поверхні форми |
Ілюстрацію, яка буде виведена в полі компоненту image, можна задати як під час розробки форми додатка, так і під час роботи програми.
Під час розробки форми ілюстрація задається установкою значення властивості picture шляхом вибору файлу ілюстрації в стандартному діалоговому вікні, яке з’являється в результаті клацання на командній кнопці Load вікна Picture Editor (рис. 10.12). Щоб запустити Image Editor, потрібно у вікні Object Inspector вибрати властивість Picture і клацнути на кнопці з трьома крапками.
Якщо розмір ілюстрації більше розміру компонента, то властивості strech потрібно присвоїти значення True і встановити значення властивостей width і Height пропорційно реальним розмірам ілюстрації.
Щоб вивести ілюстрацію в поле компонента image під час роботи програми, потрібно застосувати метод LoadFromFile до властивості Picture, вказавши в якості параметра ім’я файлу ілюстрації. наприклад, інструкція
Form1.Image1.Picture.LoadFromFile ( ‘e: \ temp \ bart.bmp’)
завантажує ілюстрацію з файлу bart.bmp і виводить її в полі виведення ілюстрації (imagel).
Метод LoadFromFile дозволяє відображати ілюстрації різних графічних форматів: BMP, WMF, JPEG (Файли з розширенням jpg).
Наступна програма, її текст приведений в лістингу 10.6, використовує компонент image для перегляду ілюстрацій, які знаходяться в зазначеному користувачем каталозі. діалогове вікно програми наведено на рис. 10.13.
Рис. 10.12. Вікно Picture Editor
Рис. 10.13. Слайд-проектор
Лістинг 10.6. Слайд-проектор
unit shpic_; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menu type TForm1 = class (TForm) Image1: ТImage; Button1: TButton; procedure FormActivate (Sender: TObject); procedure ButtonlClick (Sender: TObject); private { Private declarations} public { Public declarations} end; var Form1: TForm1; aSearchRec : TSearchRec; aPath : String; // каталог, в якому знаходяться ілюстрації aFile : String; // файл ілюстрації iw, ih: integer; // початковий розмір компонента Image implementation $ R * .DFM} // зміна розміру області виведення ілюстрації // пропорційно розміру ілюстрації Procedure Scalelmage; var pw, ph: integer; // розмір ілюстрації scaleX, scaleY: real; // масштаб по Х і Y scale : Real; // загальний масштаб begin // ілюстрація вже завантажена // отримаємо її розміри pw : = Form1.Image1.Picture.Width; ph : = Form1.Image1.Picture.Height; if pw > iw // ширина ілюстрації більше ширини компонента Image then scaleX: = iw / pw // потрібно масштабувати else scaleX: = 1; if ph > ih // висота ілюстрації більше висоти компонента then scaleY: = ih / ph // потрібно масштабувати else scaleY: = 1; // виберемо найменший коефіцієнт if scaleX < scaleY then scale: = scaleX else scale: = scaleY; // змінимо розмір області виводу ілюстрації Form1.Image1.Height : = Round (Form1.Image1.Picture.Height * scale) Form1.Image1.Width : = Round (Form1.Image1.Picture.Width * scale); // т. к. Strech = True і розмір області пропорційний // розміром картинки, то картинка масштабується без спотворень end; // вивести першу ілюстрацію procedure FirstPicture; var r : Integer; // результат пошуку файлу begin aPath : = 'F: \ temp \'; r : = FindFirst (aPath + '*. Bmp', faAnyFile, aSearchRec); if г = 0 then begin // в зазначеному каталозі є bmp-файл aFile : = APath + aSearchRec.Name; Form1.Image1.Picture.LoadFromFile (aFile); // завантажити // ілюстрацію Scalelmage; // - встановити розмір компонента Image r: = FindNext (aSearchRec); // знайти наступний файл if r = 0 then // ще є файли ілюстрацій Forml.Button1.Enabled : = True; end; end; // вивести таку ілюстрацію Procedure NextPicture (); var r : Integer; begin aFile : = APath + aSearchRec.Name; Forml.Image1.Picture.LoadFromFile (aFile); Scalelmage; // підготуємо висновок наступній ілюстрації r : = FindNext (aSearchRec); // знайти наступний файл if r <> 0 then // більше немає ілюстрацій Forml.Buttonl.Enabled : = False; end; procedure TForml.FormActivate (Sender: TObject); begin Image1.AutoSize : = False; // заборона автоізмененія розміру компонента Image1.Stretch : = True; // дозволимо масштабування // запам'ятаємо початковий розмір області виводу ілюстрації iw : = Imagel.Width; in : = Imagel.Height; Button1.Enabled : = False; // зробимо недоступною кнопку Далі FirstPicture; // вивести першу ілюстрацію end; // клацання на кнопці Далі procedure TForm1.Button1Click (Sender: TObject); begin NextPicture; end; end.
Програма виконує масштабування виведених ілюстрацій без спотворення, чого не можна домогтися простим присвоєнням значення True властивості strech. Завантаження і висновок першої та інших ілюстрацій виконують відповідно процедури FirstPicture і NextPicture. процедура FrirstPicture використовує функцію FindFirst для того, щоб отримати ім’я першого BMP-файлу. Як параметри функції FindFirst передаються:
- ім’я каталогу, в якому повинні перебувати ілюстрації;
- структура asearchRec, поле Name якої, в разі успіху, буде містити ім’я файлу, що задовольняє критерію пошуку;
- маска файлу ілюстрації.
Якщо в зазначеному при виконанні функції FindFirst каталозі є хоча б один BMP-файл, значення функції дорівнюватиме нулю. У цьому випадку метод LoadFromFiie завантажує файл ілюстрації, після чого викликається функція scaieimage, яка встановлює розмір компонента пропорційно розміру ілюстрації. Розмір завантаженої ілюстрації можна отримати, звернувшись до властивостей Form1.Image1.Picture.Width і Form1.Шmage1.Picture.Height, значення яких не залежать від розміру компонента Image.