我正在尝试连接屏幕上的某些点并用一些颜色填充它们之间的空间,但它的工作但是在最后一点之后路径转到屏幕的0,0坐标,它的左上角,我想要的时候它完成连接第一个点,例如绘制一个矩形。这是我的代码:
public void drawFloor() {
Bitmap bmpFloorPattern = BitmapFactory.decodeResource(getResources(), R.drawable.floor_pattern6);
BitmapShader patternBMPshader = new BitmapShader(bmpFloorPattern,
Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
canvas = surfaceHolder.lockCanvas();
Path path = new Path();
path.reset();
if (points != null) {
MapPoint temp = null;
for (int i = 0; i < points.size(); i++) {
float x = points.get(i).getX();
float y = points.get(i).getY();
if (temp != null) {
float deltaX = Math.abs(x - temp.getX());
float deltaY = Math.abs(y - temp.getY());
if (Math.max(deltaX, deltaY) == deltaX) {
x = temp.getX();
} else {
y = temp.getY();
}
}
path.lineTo(x, y);
temp = points.get(i);
}
canvas.drawColor(Color.WHITE);
if (points.size() > 0) {
for (int i = 0; i < points.size(); i++) {
path.lineTo(points.get(i).getX(), points.get(i).getY());
}
}
paint.setShader(patternBMPshader);
path.close();
canvas.drawPath(path, paint);
paint.setShader(null);
}
surfaceHolder.unlockCanvasAndPost(canvas);
}
答案 0 :(得分:1)
在最后一个点之后,路径将进入屏幕左上角的0,0坐标
如果Path
的当前点与第一个点不同,close()
方法将添加连接两个点的线段以关闭它。默认情况下,Path
从坐标(0,0)开始,即显示屏的左上角,它解释了您所看到的行为。要更改Path
的起点,请将第一个操作设为moveTo()
,而不是lineTo()
。