Android drawLines-线宽不同

Android drawLines-线宽不同,android,canvas,line,draw,Android,Canvas,Line,Draw,我被帆布卡住了。抽绳() 我的应用程序显示“轨迹om地图视图”,但生成的线条非常糟糕。 有人看到过这样的行为吗?也就是说,线条没有相同的宽度,不是均匀的“正方形”,是菱形,有时甚至消失 我用for(){drawLine()}进行了测试,而用drawPath进行了测试——这是同一个问题 富士通10英寸1280x800平板电脑的截图。联想平板电脑也显示了同样的情况 其中,linepoints是要绘制的轨迹线数组。每条线由4个浮点数组成。好吧,我解决了我的问题。希望这能对其他人有所帮助 在画线之前,

我被帆布卡住了。抽绳()

我的应用程序显示“轨迹om地图视图”,但生成的线条非常糟糕。 有人看到过这样的行为吗?也就是说,线条没有相同的宽度,不是均匀的“正方形”,是菱形,有时甚至消失

我用for(){drawLine()}进行了测试,而用drawPath进行了测试——这是同一个问题

富士通10英寸1280x800平板电脑的截图。联想平板电脑也显示了同样的情况


其中,linepoints是要绘制的轨迹线数组。每条线由4个浮点数组成。

好吧,我解决了我的问题。希望这能对其他人有所帮助

在画线之前,我先画

canvas.translate(X, Y);
其中X和Y值很大,比如10E+6..10E+7或其他

当我画线时,它们的xy值也是巨大的,但为负值,因此在屏幕坐标中,这个xy+xy在屏幕内给出了一些东西——但这一事实很重要,并产生了我在第一篇文章中描述的问题。 为什么会发生这种情况?我找到了一条线索。当drawLine算法试图画一条线时,它会弄乱线坐标(除法、乘法),而且由于机器算法的精度有限,算法会得到错误的数字

How this was solved?
我对canvas.translate()进行了排序,并在绘图之前动态计算屏幕坐标

现在,像那样

screen_line_coords_x = line_coord_x - X; //X is offset applied in translate.           
screen_line_coords_y = line_coord_y - Y; //Y is offset applied in translate.

canvas.drawLine(screen_line_coords_x, screen_line_coords_y, ...); 
... or drawLines() or drawPath() - all give good results.
希望这能有所帮助。

我也面临同样的问题。 但是,既然屏幕分辨率约为1280x800,为什么要使用如此大的偏移量? 我认为系统坐标与实际显示坐标相差太远,导致平移/旋转/缩放操作时计算错误


尝试修改您的计算,以便在显示坐标范围内工作。

好吧,我解决了自己的问题。您的答案不清楚。如果您面临同样的问题,解决方案是什么?您指的是什么“平移/旋转/缩放操作”?
screen_line_coords_x = line_coord_x - X; //X is offset applied in translate.           
screen_line_coords_y = line_coord_y - Y; //Y is offset applied in translate.

canvas.drawLine(screen_line_coords_x, screen_line_coords_y, ...); 
... or drawLines() or drawPath() - all give good results.