【发布时间】:2015-12-21 11:29:14
【问题描述】:
由于我是 Android 开发的初学者,我需要有人给我一个答案或任何关于我的问题的问题。
当我使用以下代码在视图上绘制一个简单的矩形时,该矩形不会以我期望的方式显示。
canvas.drawLine(0, 0, getWidth(), getHeight(), framePaint);
错了
但是当我这样改变它时,它可以正常显示。
canvas.drawRect(1, 0, getWidth(), getHeight()-1, framePaint);
正确
看起来左边和底线被从视图中剪掉了。 我期待视图的位置从零索引开始,例如 0 ~(视图大小)-1。是我理解错了还是我做错了什么?
framePaint是这样配置的;
framePaint = new Paint();
framePaint.setColor(Color.rgb(255,0,0));
framePaint.setStrokeWidth(1);
framePaint.setStyle(Paint.Style.STROKE);
【问题讨论】:
-
根据我的尝试(也许有人会证明我错了),笔划始终与形状边缘的中心对齐,不计入形状的宽度,因此您必须考虑当你定位元素时,这个事实。除此之外,您还可以将 0 传递给
setStrokeWidth以获得细线、单像素宽度的笔触,它不会根据屏幕密度进行缩放。 -
@Ace_McIntosh 感谢您的回复。是的。 setStrokeWidth 与 0 作品。我仍然很困惑,问题在于密度的笔画。我可能需要仔细阅读与此相关的参考资料或书籍...
-
好的,根据this question
setStrokeWidth接受像素数,因此无论哪种方式它都与密度无关(即使参数大于零)——抱歉让你感到困惑,我不应该当任何值都为真时,已经指出了这个特定值。