Пропорциональное изменение размеров изображения
Создание Эскиза
Ниже находится блок кода, чтобы получить изображение формы (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 только копирует клиентскую область формы. Если Вам нужно получить полный снимок формы, включая ее границы, нужен будет другой подход. Но это в следующий раз!
Комментарии