В настоящее время я реализую поддержку 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);
, который затем используется против базового изображения для рендеринга только этот прямоугольник
Короче, как я могу подсчитать, сколько я должен панорамирование/наклон, когда я уже знаю увеличения изображения