свій додаток діалогом
SavePictureDialog (див. розділ 8.2 ), введете в меню розділ Зберегти як і в його обробник помістіть оператор
SavePictureDialog1. Execute then . Picture. SaveToFile (SavePictureDialog1. FileName);
то користувач отримає можливість зберегти зображення будь-якого формату у файлі з новим ім'ям. Тільки при цьому, щоб не виникало надалі плутанини, розширення файлу, таки має відповідати формату зберігається зображення. p> Абсолютно ідентично для зображень будь-якого формату буде працювати програма, якщо оператор збереження ви заміните на
. Picture. Graphic. SaveToFile (. FileName);
використовує властивість Picture. Graphic . А якщо вам відомий формат зберігається в компоненті Image зображення, то ви можете застосувати метод SaveToFile до властивостей Picture. Bitmap , Picture. Icon і Picture. Metafile . p> Для всіх розглянутих об'єктів Picture , Picture. Bitmap , Picture. Icon і Picture. Metafile визначені методи присвоювання значень об'єктів:
Assign (Source: TPersistent);
Однак, для BitMap , Icon і Metafile привласнювати можна лише значення однорідних об'єктів: відповідно бітових матриць, піктограм, метафайлов. При спробі привласнити значення різнорідних об'єктів генерується виключення ЕConvertError . Об'єкт Picture - універсальний, йому можна присвоювати значення об'єктів будь-яких з інших трьох класів. А значення Picture можна привласнювати тільки тому об'єкту, тип якого збігається з типом об'єкта, що зберігається в ньому. p> Метод Assign можна використовувати і для обміну зображеннями з буфером Clipboard. Наприклад, оператор
. Assign (Image1. Picture);
занесе в буфер обміну зображення, що зберігається в Image1 . Аналогічно оператор
графіка delphi зображення додаток
Image1. Picture. Assign (Clipboard);
прочитає у Image1 зображення, що знаходиться в буфері обміну. Причому це може бути будь-яке зображення і навіть текст.
Треба тільки не забути при роботі з буфером обміну вкласти в оператор uses вашого модуля посилання на модуль Clipbrd . Автоматично Delphi це посилання не вставляти.
Повертаючись до властивостей компоненту Image , можна відзначити один недолік, властивий нашому тестовому додатком, наведеним на рис.4.5 При завантаженні різних зображень розмір вікна програми може виявитися або занадто маленьким, і тоді ви побачите тільки частину зображення, або занадто великим, і тоді зображення буде негарно розміщено в лівому верхньому куті форми, залишаючи багато порожнього простору. Цей недолік можна усунути, якщо скористатися властивостями Height (висота) і Width (ширина) компонента Image . При властивості AutoSize встановленому в true розміри Image автоматично встановлюються рівними розмірам завантаженого зображення. І цими розмірами можна скористатися для відповідної зміни розмірів форми. Наприклад, наведений раніше код завантаження зображення з файлу можна замінити на наступний:
OpenPictureDialog1. Execute then
begin . Picture. LoadFromFile (. FileName);. ClientHeight: = Image1. Height +10;. Top: = Form1. ClientRect. Top
+ (Form1. ClientHeight - Image1. Height) div 2;. ClientWidth: = Image1. Width +10;. Left: = Form1. ClientRect. Left
+ (Form1. ClientWidth - Image1. Width) div 2;
end ;
У цьому коді розміри клієнтської області форми встановлюються дещо більше розмірів компонента Image1 , які в свою чергу адаптуються до розміру картинки завдяки властивості AutoSize . Внесіть ці виправлення в свій додаток, виконайте його і побачите, що форма стала автоматично адаптуватися до розмірів завантаженого зображення
Компонент Shape
...