как применить центр просмотра изображений для другого центра просмотра изображений - PullRequest
0 голосов
/ 15 марта 2010

Я разрабатываю приложение для перерисовки изображений. я знаю центр одного изображения, которое имеет свойство масштабирования. то есть это может изменить его структуру и центр. это должно быть применено к другому центру обзора. Когда я применяю центр к вновь сформированному представлению изображения, это дает неправильный центр, потому что предыдущее изображение имеет свойство масштабирования так как я могу получить точный центр моего нового изображения из предыдущего изображения

1 Ответ

0 голосов
/ 15 марта 2010

Ваше мнение или изображение

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) нового ВИДА.

...