gpt4 book ai didi

android - Canvas坐标系的单位是什么? - 安卓

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:10 25 4
gpt4 key购买 nike

我发现Canvas的坐标系单位和screen不一样。

例如我的情况如下:

对于一个特定的点,它从 ImageView.getX()ImageView.getY() 获得的屏幕坐标是 (336, 578).

然后通过反复试验,我在 Canvas 上画了一个点,使这个点落在与 ImageView 完全相同的位置。我调用了 canvas.drawCircle(330, 440, radius , paint); 来实现这一点。

问题来了:

为什么 2 个坐标 (336, 578) 和 (330, 440) 会不同?

是不是因为屏幕和 Canvas 使用的单位不同?

这是关于像素、dp 等的问题吗?

最佳答案

您可以尝试使用 View.getLocationInWindow 来回转换窗口坐标,这样您就可以始终确保使用相同的坐标系。

ImageView.getXY 的坐标是相对于父级的。 Canvas 坐标是相对于 View 的。这可能会导致差异

编辑:我假设您在一个地方获得了 View 的坐标(使用 getXgetY)。将这些转换为窗口坐标。调用这些 viewXY[]

当您需要使用它们时,在 Canvas 中绘制时,还要将顶部和左侧坐标转换为窗口坐标。我们称这些为 canvasXY[]

现在,要绘制的 X 位置将是 viewXY[0] - canvasXY[0],而 Y 位置将是viewXY[1] - canvasXY[1]

关于android - Canvas坐标系的单位是什么? - 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17609059/

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