我有以下代码:
class Canvass(context: Context) : View(context) {
override fun onDraw(canvas: Canvas) {
canvas.drawRGB(255, 255, 255)
val width = width
val height = height
val paint = Paint()
var offset = 50
paint.setARGB(255, 0, 0, 0)
paint.setStrokeWidth(2f)
for (i in 0..100) {
canvas.drawLine(0f, 30f + offset, width.toFloat(), 30f + offset, paint)
offset += 40
}
canvas.drawLine(150f, 0f, width.toFloat(), height.toFloat() , paint)
}
}
它产生以下内容:
但是我希望结果中的 倾斜 行是垂直的。
当我更改时:
canvas.drawLine(150f, 0f, width.toFloat(), height.toFloat() , paint)
类似于:
canvas.drawLine(150f, 0f, width.toFloat(), 16000F, paint)
它更接近垂直,但仍然偏斜:
答案 0 :(得分:3)
canvas.drawLine(150f, //Start at x == 150
0f, // And y = 0
width.toFloat(),// Continue to x = width
height.toFloat(), //And y = height
paint) // Not relevant to the position
您的x值必须匹配才能垂直。 X是与宽度匹配的值。当x值为150且宽度为1时,它将最终像这样。
直线始终具有匹配的x 或 y坐标,具体取决于方向。因此,要使其正常工作,您需要将width.toFloat()
更改为150f
或其他某个值。
我也强烈建议您阅读坐标系。您可以查看this。尽管它涵盖了Java代码,但仍与Android上的系统相同。