10

我想使用具有一定宽度(以像素为单位,或理想情况下为“dp”)的线条在画布上显示 X/Y 数据。我已经尝试过 Paint 的 setStrokeWidth(..) 方法,这确实改变了线宽,但这不是我需要的。在我的情况下,我使用 matrix.preScale(xScale, yScale) 将我的画布缩放到“真实工程单位”,因此 X 比例表示 0 到 100,Y 是 0 到 1。Paint 对象的 setStrokeWidth() 方法似乎设置笔画,使其遵循我的矩阵 preScale() 设置。换句话说,水平线画得很细,垂直线画得很粗。

有没有办法配置 Paint 以便无论线条绘制在哪个方向,它的宽度都是一致的像素数?

我曾尝试定义一个作为线条的 Drawable,并从中制作一个 ShapeDrawable,然后将其应用于 Paint,但在运行时遇到了一些令人讨厌的类转换错误。这让我觉得这是错误的做法。但也许我放弃得太早了。

我知道有许多可用的 Android 绘图/图表包,其中一些带有源代码,但我真的希望在这里了解平台,而不是使用第三方解决方案。

感谢您的任何提示!富有的

4

2 回答 2

11

例如在 Android 上:paint.setStrokeWidth(3); 此方法设置线宽。在这种情况下,线宽是 3 个像素。我在黑莓上搜索这种方法。

尝试这个 :

    Graphics.setColor(Color.RED);
    Graphics.setStrokeWidth(20);
    Graphics.drawRect(0, 0, 100, 100);

它们在 net.rim.device.api.ui.Graphics 包中可用。

于 2011-06-14T07:05:03.970 回答
0

在地图上绘制叠加层时,我必须做类似的事情。

由于用户可以使用多点触控来动态缩放地图,因此当我进入绘图例程时,我会计算 x 和 y 轴的缩放因子,将其应用于画布,绘制地图,然后反转此缩放因子并应用它覆盖的线宽。因此画布被缩放,覆盖被缩放,然后是反缩放的,所以它们实际上是固定宽度。

我发现这非常有效,没有真正的性能影响。

于 2011-07-22T11:24:59.717 回答