Внешний вид сайта:

Пропорциональное изменение размеров изображения

Идея для создания Вашего приложения: создание формы, на которой пользователь может видеть открытые формы и передвигаться по ним, отображая их эскизы в диалоговом окне. Идея подобна «Quick Tabs»: особенность браузера IE. Перед фактическим созданием Вашего приложения Delphi, Вы должны знать, как захватить изображение формы (form-screenshot) и как пропорционально изменить его размеры к желательному изображению эскиза.

Создание Эскиза

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

Комментарии

Нет комментариев. Ваш будет первым!