Пропорциональное изменение размеров изображения
Создание Эскиза
Ниже находится блок кода, чтобы получить изображение формы (Form1), используя метод GetFormImage. В результате TBitmap будет изменен до максимальной ширины эскиза (200px) и высоты (150px). Изменение размеров сохраняет пропорции.
В результате изображение будет отображено в управлении TImage по имени Image1
const
maxWidth = 200;
maxHeight = 150;
var
thumbnail : TBitmap;
thumbRect : TRect;
begin
thumbnail := Form1.GetFormImage;
try
thumbRect.Left := 0;
thumbRect.Top := 0;
// пропорциональное изменение размеров
if thumbnail.Width > thumbnail.Height then
begin
thumbRect.Right := maxWidth;
thumbRect.Bottom := (maxWidth * thumbnail.Height) div thumbnail.Width;
end
else
begin
thumbRect.Bottom := maxHeight;
thumbRect.Right := (maxHeight * thumbnail.Width) div thumbnail.Height;
end;
thumbnail.Canvas.StretchDraw(thumbRect, thumbnail) ;
// Изменение размеров изображения
thumbnail.Width := thumbRect.Right;
thumbnail.Height := thumbRect.Bottom;
// отображение в управлении TImage
Image1.Picture.Assign(thumbnail) ;
finally
thumbnail.Free;
end;
end;
Обратите внимание: GetFormImage только копирует клиентскую область формы. Если Вам нужно получить полный снимок формы, включая ее границы, нужен будет другой подход. Но это в следующий раз!
Комментарии