Android Canvas 坐标系

Mit*_*tch 5 android drawing canvas coordinate-systems

我正在尝试查找有关如何更改画布坐标系的信息。我有一些矢量数据,我想使用圆和线之类的东西绘制到画布上,但数据的坐标系与画布坐标系不匹配。

有没有办法将我使用的单位映射到屏幕的单位?

我正在绘制一个没有占据整个显示器的 ImageView。

如果我必须在每次绘图调用之前进行自己的计算,如何找到 ImageView 的宽度和高度?

我尝试的 getWidth() 和 getHeight() 调用似乎返回了整个画布大小,而不是 ImageView 的大小,这没有帮助。

我看到一些矩阵的东西,那对我有用吗?

我尝试使用“public void scale(float sx, float sy)”,但这更像是像素级缩放,而不是通过扩展每个像素的矢量缩放功能。这意味着如果增加尺寸以适应屏幕,线条粗细也会增加。


更新:

经过一些研究,我开始认为没有办法将坐标系更改为其他东西。我需要将所有坐标映射到屏幕的像素坐标,并通过修改每个向量来实现。getWidth() 和 getHeight() 现在似乎对我来说效果更好。我可以说有什么问题,但我怀疑我不能在构造函数中使用这些方法。

Com*_*ish 0

据我所知,在 Android 中动态执行自定义矢量图形的唯一方法是将所有内容绘制到图像文件中,然后将其放入ImageView. 我不确定我是否完全理解您的要求,但如果唯一的问题是缩放,则 ImageView 会将其指定的任何图像缩放为其自己的大小,并android:scaleType="center"用作ImageView.

至于改变坐标系,我怀疑这是可能的(尽管我还没有研究过)。不过,编写一个将数据系统映射到标准 Android 坐标系的函数可能相当简单。