2011-12-22 1 views

ответ

4

Для данной зоны А,

newx * newy = A 
newx/newy = oldx/oldy 

, который дает вам:

newy = A/newx 
newy = newx/(oldx/oldy) 

A/newx = newx/(oldx/oldy) 
A * oldx/oldy = newx^2 

, который затем решает, чтобы:

newx = sqrt(A * oldx/oldy) 
newy = A/newx 

Тогда снова, это математика вопрос, не программирование одного ...

+0

мне нужно программировать это в C# ... –

+1

И в чем проблема? Единственное, что изменилось, это 'Math.sqrt'. И это еще вопрос математики. – Amadan

2

Дать п у Вас есть два изображения с размерами (w1, h1) и (w2, h2), и вы хотите масштабировать второе изображение в той же области, что и первый, сохраняя при этом соотношение сторон, а затем

A = w1 * h1 
new_w2 = sqrt(A * (w2/h2)) 
new_h2 = A/new_w2 
+0

Я думаю, что это должно быть new_w2 = sqrt (A * (w2/h2)) –

+0

Исправить. Исправлена. –