Показать сообщение отдельно
  #7  
Старый 14.03.2017, 12:44
vikk vikk вне форума
Начинающий
 
Регистрация: 01.10.2010
Сообщения: 132
Репутация: 10
По умолчанию

Вот как в итоге изменилась функция получения прямоугольника рисования картинки:

Код:
function GetImageDrawRect(ImageWidth, ImageHeight, CanvasWidth, CanvasHeight : Integer) : TRect;
var
  K : Double;
  DrawWidth, DrawHeight : Integer;
begin
  K := Min(CanvasWidth / ImageWidth, CanvasHeight / ImageHeight); //коэффициент сжатия/растяжения
  DrawWidth := Round(ImageWidth * K);
  DrawHeight := Round(ImageHeight * K);

  Result.Left := 0;
  Result.Right := Result.Left + DrawWidth;
  Result.Top := 0;
  Result.Bottom := Result.Top + DrawHeight;
end;

Помещает картинку любого размера в левый верхний угол канвы компонента(у меня это PaintBox), растягивая/сжимая максимум из её длины и ширины до размеров компонента, в котором рисуем. Проверено, мин нет
Ответить с цитированием