2014-02-21 2 views
0

В настоящее время я реализую поддержку Pan/Tilt/Zoom в своем приложении. Я передать в изображении, а затем рассчитать масштаб следующим образомРассчитать, сколько для панорамирования/наклона изображения

int widthPercent = width/100; 
int heightPercent = height/100; 

int zoomX = width - (widthPercent * (int)Zoom); 
int zoomY = height - (heightPercent * (int)Zoom); 

, где ширина ширина исходного изображения, высота высота исходного изображения и масштабирования является значение, переданное из пользовательского интерфейса, в пределах от 0 до 100 .

Теперь я хочу реализовать поддержку панорамирования/наклона, когда изображение увеличено, чтобы все изображение можно было получить. Опять же Pan и Tilt будут управляться из пользовательского интерфейса (снова 0 до 100), но я хочу, чтобы он оставался в пределах изображения, чтобы изображение не повторялось, что оно в настоящее время делает.

Я тока расчета Pan и Tilt, как так:

// Calculate Pan 
int panWidthPercent = width/100; 
int finalPan = (int)Pan * panWidthPercent; 

// Calculate Tilt 
int tiltHeightPercent = height/100; 
int finalTilt = (int)Tilt * tiltHeightPercent; 

Это работает до такой степени, однако, кажется, повторять изображение после того, как панорамирование для небольшого времени (обычно, когда Pan = 10 или более) , Я хочу, чтобы это прекратилось после того, как она делает все изображение т.е. оно достигает ширины, но добавляя что-то вроде следующего не кажется, что остановить эту

if(finalPan >= width) finalPan = width; 

После значения высчитывает создать исходный прямоугольник, используя эти значения

mClippingRectangle = new Int32Rect(finalPan, finalTilt, zoomX, zoomY); 

, который затем используется против базового изображения для рендеринга только этот прямоугольник

Короче, как я могу подсчитать, сколько я должен панорамирование/наклон, когда я уже знаю увеличения изображения

ответ

0

Управляемый, чтобы выполнить это посредством проверки того, добавлено/наклон Объем лотка для увеличения ширины/высот больше, чем общие изображения ширина/высота, то остановить его от панорамирования/наклона

// Calculate Pan 
double finalPan = Pan * widthPercent; 
if ((finalPan + zoomX) >= width) 
{ 
    finalPan = width - zoomX; 
} 

// Calculate Tilt 
double finalTilt = Tilt * heightPercent; 
if ((finalTilt + zoomY) >= height) 
{ 
    finalTilt = height - zoomY; 
} 
Смежные вопросы