Иллюстрированный самоучитель по Delphi 7 для начинающих

Вывод иллюстраций

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 r = 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.Image1.Picture.Height, значения которых не зависят от размера компонента Image.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.