gpt4 book ai didi

Android drawLines - 线宽不同

转载 作者:行者123 更新时间:2023-11-29 21:39:02 25 4
gpt4 key购买 nike

我被 canvas.drawLines() 卡住了。

我的应用程序显示轨道 om map View ,但生成的线条很糟糕。有没有人看到这样的行为?即,线的宽度不同,甚至不是“正方形”,而是菱形,有时甚至会消失!

我已经测试过 for(){drawLine()} 而不是 drawPath - 同样的问题。

屏幕截图采用 10"平板电脑 1280x800,富士通。联想平板电脑显示相同。

http://jpegshare.net/c8/1d/c81daa6cff15e3d14cb1268679bb1af1.png.html

    borderPaint = new Paint();
borderPaint.setAntiAlias(true);
borderPaint.setStrokeWidth(5);
borderPaint.setStyle(Paint.Style.STROKE);
borderPaint.setColor(Color.WHITE);
//borderPaint.setAlpha(190);


fillPaint = new Paint();
fillPaint.setAntiAlias(true);
fillPaint.setStyle(Paint.Style.STROKE);
fillPaint.setStrokeWidth(3);
fillPaint.setColor(Color.RED);

....
canvas.drawLines(linepoints, 0, linepoints_count, borderPaint);
canvas.drawLines(linepoints, 0, linepoints_count, fillPaint);

其中 linepoints 是要绘制的轨迹线数组。每行由 4 个 float 组成。

最佳答案

好吧,我想通了我的问题。希望这可以帮助某人。

在画线之前,我做

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.

希望这可能有所帮助。

关于Android drawLines - 线宽不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604169/

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