gpt4 book ai didi

android - Canvas 缩放转到点 (0,0)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:22:47 32 4
gpt4 key购买 nike

我在缩放 Canvas 时遇到问题。我制作了一个自定义 View ,当我缩小 Canvas 到位置 (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;

最佳答案

枢轴点基本上是您的 Canvas 将围绕其进行变换的点,因此使用 0,0 的枢轴进行缩放会使它向该点收缩。使用以下方法,您可以将轴心点更改为您想要的任何位置:

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

现在是新东西:如果您希望 Canvas 向其中心缩放,您只需要知道 Canvas 中间的点即可:

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);

关于android - Canvas 缩放转到点 (0,0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8848523/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com