Я разрешаю пользователю изменять размер изображения, пытаясь сохранить исходное соотношение сторон изображения.
Для каждой операции изменения размера у меня есть переменная «offset», которая указывает изменение ширины и высоты. Это основано на движении мыши, поэтому это может быть любая комбинация значений в зависимости от того, насколько сильно они двигали мышь при изменении размера.
То, что я делаю сейчас, - это взятие большего из двух значений (изменение x и y) и использование его для вычисления другого значения с тем же соотношением сторон. Вот мой код:
if (Math.Abs(offset.X) > Math.Abs(offset.Y))
{
offset.Y = (int)(offset.X / AspectRatio);
}
else
{
offset.X = (int)(offset.Y * AspectRatio);
}
Соотношение сторон является стандартным значением ширины / высоты.
Проблема с моим кодом в том, что он использует целочисленные значения, поэтому он округляется и вызывает искажение соотношения сторон.
Я предполагаю, что мне нужно привязаться к целочисленным значениям, которые делятся равномерно по соотношению сторон, или что-то для этого. Но я не знаю, как это сделать, изменив эти значения смещения x и y.