Вот как в итоге изменилась функция получения прямоугольника рисования картинки:
Код:
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;
Помещает картинку любого размера в левый верхний угол, растягивая/сжимая максимум из её длины и ширины до размеров квадрата, в котором рисуем. Проверено, мин нет