Как я масштабирую один прямоугольник к максимальному размеру, возможному в другом прямоугольнике?

Вы могли отредактировать соответственно размерную панель цвета, который Вы хотите на свои обои в GIMP и затем устанавливаете прозрачность выше. Я не знаю, существует ли более легкий путь или нет.

59
задан Agnel Kurian 3 September 2009 в 12:11
поделиться

4 ответа

scale = min( dst.width/src.width, dst.height/src.height)

Это ваш подход, но он написан более четко.

116
ответ дан 24 November 2019 в 18:16
поделиться

Другим вариантом может быть масштабирование до максимальной ширины, а затем проверка, превышает ли масштабированная высота максимально допустимой высоты, и если да, масштабировать по высоте (или наоборот):

scale = (dst.width / src.width);
if (src.height * scale > dst.height)
 scale = dst.height / src.height;

Я думаю, что это решение и короче, быстрее и проще для понимания.

10
ответ дан 24 November 2019 в 18:16
поделиться
  1. Определите меньшее из destWidth / srcWidth и destHeight / srcHeight
  2. Масштаб с помощью этого

редактирования , он, конечно, такой же, как ваш метод, с перемещением частей формулы. Мое мнение таково, что это семантически яснее, но это всего лишь мнение.

1
ответ дан 24 November 2019 в 18:16
поделиться

Если все измерения не равны нулю, я бы использовал следующий код (который, по сути, соответствует вашему коду).

scaleFactor = (outerWidth / outerHeight > innerWidth / innerHeight) 
    ? outerHeight / innerHeight
    : outerWidth / innerWidth

Его также можно изменить, чтобы позволить любому измерению быть нулевым, если требуется.

1
ответ дан 24 November 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: