Ich habe ein Quellrechteck und ein Zielrechteck. Ich muss die maximale Skalierung finden, auf die die Quelle skaliert werden kann, während sie in das Zielrechteck passt und das ursprüngliche Seitenverhältnis beibehalten.Wie skaliere ich ein Rechteck auf die maximal mögliche Größe innerhalb eines anderen Rechtecks?
Google gefunden one Weg, es zu tun, aber ich bin mir nicht sicher, ob es in allen Fällen funktioniert. Hier ist meine selbstgebraute Lösung:
- Berechnen Sie Höhe/Breite für jedes Rechteck. Dies ergibt die Steigungen der Diagonalen
msrc
undmdest
. - Wenn
msrc < mdst
, Zunder Quelle Breite das Ziel Breite (und Skalenhöhe im gleichen Verhältnis) zu passen - Andernfalls Skala Quelle Höhe das Ziel Höhe (und Skalenbreite durch die passend gleiches Verhältnis)
Auf der Suche nach anderen möglichen Lösungen für dieses Problem. Ich bin mir nicht einmal sicher, ob mein Algorithmus in allen Fällen funktioniert!
Süß! Sobald Sie die Waage haben, verwenden Sie diese, um die endgültigen Abmessungen zu erhalten: 'width = src.width * scale' und' height = src.height * scale' –
Ändern Sie min mit max, wenn Sie den gesamten Zielbereich abdecken möchten. – Glogo
Gleiche Lösung, aber mit Namen klarer für mich: 'scale = min (maxWidth/actualWidth, maxHeight/actualHeight)', 'newWidth = actualWidth * scale',' newHeight = actualHeight * scale'. –