Canvas类的最全面详解 - 自定义View应用系列(阅读量1.5w,点赞27)
Android Canvas DrawLines中第一个参数的解释(1参考此文所写)
在看一个控件,调用到了Canvas.drawLines(float[] pts, Paint paint) 方法,
我看到代码里用循环把pts数组四个四个地灌,我就觉得莫名其妙,为什么啊,查了资料发现原来是这么回事:
pts的长度必须为4的倍数,四个四个归成一组。
@Override
protected void onDraw(Canvas canvas) {
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.BLACK);
mPaint.setStrokeWidth(5);
float[] pts4 = {//矩形
100, 100, 1200, 100,
1200, 100, 1200, 1200,
1200, 1200, 100, 1200,
100, 1200, 100, 100
};
float[] pts5 = {//三角形
600, 100, 1200, 1200,
1200, 1200, 100, 1200,
100, 1200, 600, 100
};
canvas.drawLines(pts5, mPaint);
}
我们以矩形为例进行说明:
float[] pts4 = {
100, 100, 1200, 100,
1200, 100, 1200, 1200,
1200, 1200, 100, 1200,
100, 1200, 100, 100
};
那我们取前四个 pts[0], pts[1], pts[2], pts[3]:
100,100, 1200, 100:前两个表示的是直线起点的横纵坐标,后两个表示的是直线终点的横纵坐标,表示的坐标(100,100)到坐标坐标(1200,100)的直线
1200, 100, 1200, 1200:坐标(1200,100)到坐标(1200,1200)的直线
以此类推,刚好是个矩形。
也就是说,利用这个pts调用drawLines方法绘制出来的图如附图: