Ваше мнение или изображение
width*height
ваш центральный вид всегда должен быть в положении
(width/2,height/2)
независимо от того, масштабировано ли изображение или нет.
Просто пересчитайте свой центр после шкалы, если вам нужен «масштабированный» центр, или сохраните в памяти исходное положение центра, если вы этого не сделаете.
псевдокод:
getCenter(w,h){
pos[0]=w/2;
pos[1]=h/2;
return pos;
}
calc(image){
c = getCenter(image.w,image.h);
scaled = image.scale(80); //That is 80% of original
d = getCenter(scaled.w,scaled.h);
if(something) return c;
else return d;
}
Второе объяснение после обсуждения (читай комментарии):
Предположим, у вас есть изображение 640X480, и вы создаете вид с разрешением 320X240 (четверть) и перемещаете ЭТОТ вид на 100 пикселей вправо и на 50 пикселей вниз от позиции (0,0), которая обычно является верхним левым углом вашего изображения то:
Ваш новый центр ВИДА будет как обычно в позиции (160 120) ВИДА
исходный центр ОРИГИНАЛЬНОГО изображения останется на своем месте (320 240), что случайно соответствует правому нижнему углу вашего ПРОСМОТРА.
Если вы хотите знать, ГДЕ исходный центр ОРИГИНАЛЬНОГО изображения заканчивался ПОСЛЕ движения и «обрезки», тогда вам просто нужно знать, куда вы переместили ВИД:
100px right becomes (original position - relative movement) (320 - 100) = 220
50px down becomes (original position - relative movement) (240 - 50) = 190
Таким образом, ваш ОРИГИНАЛЬНЫЙ центр будет в позиции (220 190) нового ВИДА.