2012-01-13 1 views
5

У меня проблема с масштабированием холста. Я сделал индивидуальное представление, в котором я рисую диаграммы отношений теперь, когда я уменьшаю размер холста, переходит в позицию (0,0). Я видел разные темы и вопросы, но не нашел подходящего ответа.Canvas Zoom переходит в точку (0,0)

Что я делаю в методе onDraw.

canvas.scale(mScaleFactor, mScaleFactor); 

Я также видел canvas.scale (, у, точек, х Py) метод, но я не знаю, как получить опорные точки х и у.

public boolean onScale(ScaleGestureDetector detector) { 

mScaleFactor *= detector.getScaleFactor(); 
// Don't let the object get too small or too large. 
mScaleFactor = Math.max(0.4f, Math.min(mScaleFactor, 5.0f)); 
if(mScaleFactor>=1) 
    mScaleFactor=1f; 

invalidate(); 
return true; 

}

+0

публикуйте код. Трудно вам помочь, не увидев все части головоломки. –

ответ

9

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

canvas.scale(x, y, px, py); 

Теперь для нового материала: Если вы хотите, чтобы ваш холст масштабироваться к ее центру, вы просто должны знать точка в центре холста:

float cX = canvas.getWidth()/2.0f; //Width/2 gives the horizontal centre 
float cY = canvas.getHeight()/2.0f; //Height/2 gives the vertical centre 

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

canvas.scale(x, y, cX, cY); 
+0

Это делает мое изображение в центре экрана. – sajjoo

+0

Где вы хотите, чтобы масштабирование было центрированным? – Jave

+0

Я хочу масштабировать область между пальцами, и ее нужно масштабировать в той же точке. как и карта google. – sajjoo

Смежные вопросы