Графические возможности Delphi. Image.
Этот компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растровой картинки, пиктограммы или метафайла. Любой из этих типов изображения содержится в центральном свойстве компонента — picture. В свойстве canvas содержится канва, с помощью которой при необходимости программа может отредактировать растровое изображение (но не пиктограмму или метафайл!).
Свойства компонента:
property Center: Boolean; |
Указывает, надо ли центрировать изображение в границах компонента. Игнорируется, если Autosize=True или если Stretch =True и изображение не является пиктограммой (ICO) |
property Canvas : TCanvas; |
Содержит канву для прорисовки изображения |
property Transparent: Boolean; |
Запрещает/разрешает накладывать собственный фон изображения на фон компонента |
property Proportional: Boolean; property Stretch: Boolean; |
Разрешает/запрещает изменять размер изображения так, чтобы оно целиком заполнило клиентскую область компонента. |
property Picture: TPicture; |
Разрешает/запрещает пропорционально уменьшать высоту и ширину изображения, если оно не может целиком уместиться в рабочей зоне компонента |
property IncrementalDisplay: Boolean; |
Разрешает/запрещает показ большого изображения по мере его загрузки Центральное свойство класса. Служит контейнером изображения |
Методы компонента:
Никаких специальных методов у Image нет.
Описание использования:
Иллюстрацию, которая будет выведена в поле компонента image, можно задать как во время разработки формы приложения, так и во время работы программы.
Во время разработки формы иллюстрация задается установкой значения свойства picture путем выбора файла иллюстрации в стандартном диалоговом окне, которое появляется в результате щелчка на командной кнопке Load окна Picture Editor. Чтобы запустить 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).
Пример использования.
Написать программу-фотоальбом, которая позволяет просматривать фотографии и оставлять к ним записи.
Реализация.
Замечание. Для работоспособности программы необходимо создать в папке программы текстовый файл comment.txt и сменить ему расширение на .dat (comment.dat); также необходимо разместить 10 графических файлов с расширением .bmp и имеющих имена от 1 до 10.
Данная программа представляет собой прототип программы-фотоальбома. Она представлена для ознакомления принципа использования Image.
Интерфейс:
Вид инспектора объектов:
Программный код.
Для Panel1.Visible:=False;
Type mas=array [1..10] of String;
Var n:Integer;
log_f:TextFile;
a:mas;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Form1.BitBtn2.Caption:='Вперед';
n:=n+1;
If n=11 then n:=1;
Form1.Image1.Picture.LoadFromFile(IntToStr(n)+'.bmp');
Form1.BitBtn3.Visible:=True;
Form1.GroupBox1.Visible:=True;
Form1.BitBtn4.Visible:=True;
Form1.Label1.Caption:=a[n];
If a[n]='' then Form1.BitBtn4.Caption:='Добавить'
else Form1.BitBtn4.Caption:='Изменить';
end;
procedure TForm1.FormCreate(Sender: TObject);
var i:byte;
begin
n:=0;
Form1.BitBtn3.Visible:=False;
Form1.BitBtn4.Visible:=False;
Form1.GroupBox1.Visible:=False;
Form1.BitBtn2.Caption:='Просмотр';
Form1.Panel1.Visible:=False;
AssignFile(log_f,'comment.dat');
Try
Reset(log_f);
For i:=1 to 10 do
ReadLn(log_f,a[i]);
CloseFile(log_f);
except
ShowMessage('Файл comment.dat не найден!'+#13#10+
'Программа завершит свою работу.');
Form1.Close;
end;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
n:=n-1;
If n=0 then n:=10;
Form1.Image1.Picture.LoadFromFile(IntToStr(n)+'.bmp');
Form1.Label1.Caption:=a[n];
If a[n]='' then Form1.BitBtn4.Caption:='Добавить'
else Form1.BitBtn4.Caption:='Изменить';
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
Var j:byte;
begin
ReWrite(log_f);
For j:=1 to 10 do
WriteLn(log_f,a[j]);
CloseFile(log_f);
Form1.Close;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Form1.Memo1.Clear;
Form1.BitBtn6.Caption:=Form1.BitBtn4.Caption;
If Form1.BitBtn6.Caption='Добавить' then Form1.Label2.Caption:='Добавление комментария'
else
Begin
Form1.Memo1.Text:=a[n];
Form1.Label2.Caption:='Изменение комментария';
End;
Panel1.Visible:=True;
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
Form1.Panel1.Visible:=False;
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
a[n]:=Form1.Memo1.Text;
Form1.Label1.Caption:=a[n];
Form1.Panel1.Visible:=False;
end;