我在缩放画布时遇到问题。我已经制作了一个自定义视图,我现在绘制关系图时,我缩小画布到位置(0,0)。我看到了不同的主题和问题,但找不到合适的答案。
我在onDraw方法中所做的是。
canvas.scale(mScaleFactor, mScaleFactor);
我也看过canvas.scale(x,y,px,py)方法,但我不知道如何获得x和y的轴心点。
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);
答案 1 :(得分:-1)