矩阵变换后的细线图

时间:2012-06-20 13:40:25

标签: android vector-graphics

我正在Android平板电脑上测试XY图形的绘制。这是运行ICS的三星Galaxy Tab 2(7“)。

我使用重写的onDraw方法创建了一个View子类型。它的工作是简单地将(x,y)坐标数组绘制为一系列连接的线段。我有一个表示y值的float数组,x值是数组索引。 y值从-1延伸到1,大约有10个值。很简单。

目标画布在屏幕上是一个正方形,比如大约480乘480像素,其中+1位于屏幕顶部,-1位于底部,第0位位于最左侧和第N位价值极右。

因此,沿着X轴和Y轴从“世界坐标”到“屏幕坐标”的变换是不均匀的。在我的onDraw方法中,我将一个translate,一个scale,然后另一个translate操作应用到Canvas对象,然后我继续使用一个画笔笔划宽度为0的Paint笔绘制线段。

结果是一个宽度不发际的图表。显然,我的刻度操作使线段变厚,使得倾斜的线条比陡峭的线条看起来更厚。当我改变我的世界坐标范围,使它们沿两个轴相等(以匹配方形画布)时,这个问题就消失了。

有趣的是,这个问题出现在平板电脑上,但不会出现在Android ICS模拟器上。

对此的任何想法将不胜感激。无论转型是什么,我都希望有一个发际线图。

1 个答案:

答案 0 :(得分:0)

这个问题的明显解决方法是保持画布的矩阵不受影响并自己执行平移/缩放/平移操作(从世界转换为屏幕坐标),然后使用屏幕坐标进行绘制,使用宽度为0的画笔。