Tengo un rectángulo fuente y un rectángulo de destino. Necesito encontrar la escala máxima a la que se puede escalar la fuente mientras se ajusta dentro del rectángulo de destino y manteniendo su relación de aspecto original.¿Cómo escalo un rectángulo al tamaño máximo posible dentro de otro rectángulo?
Google encontró one manera de hacerlo, pero no estoy seguro de si funciona en todos los casos. Aquí está mi solución hecha en casa:
- Calcular altura/ancho para cada rectángulo. Esto da las pendientes de las diagonales
msrc
ymdest
. - Si
msrc < mdst
, fuente escala anchura para encajar el destino anchura (y altura de escala en la misma proporción) - De lo contrario, la fuente de escala altura para encajar el destino altura (y escala anchura por la la misma proporción)
Buscando otras posibles soluciones a este problema. ¡Ni siquiera estoy seguro de si mi algoritmo funciona en todos los casos!
¡Dulce! Una vez que tenga la escala, utilícela para obtener las dimensiones finales: 'ancho = src.width * scale' y' height = src.height * scale' –
Cambie el mínimo con el máximo si desea cubrir el área de destino completa. – Glogo
La misma solución, pero con nombres más claros para mí: 'scale = min (maxWidth/realWidth, maxHeight/actualHeight)', 'newWidth = actualWidth * scale',' newHeight = actualHeight * scale'. –