我正在尝试开发项目,目前我正在完成简单的任务。我想移动一些我在屏幕上绘制的图纸。
我的问题是我绘制了一些Rect对象和一个路径,当我执行它时,只是矩形在移动。
当我移动矩形时,在每次执行中删除绘制的矩形并绘制“新的”,但路径不会发生。
很抱歉我的解释不好,这里有一些代码:
public void run(){
preparePaint();
while(CanDraw){
if ( !surfaceHolder.getSurface().isValid()){
continue;
}
canvas = surfaceHolder.lockCanvas();
if ( ini == true ){ SenStart(canvas); ini = false;}
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
rectangle0.set(sensor0.left, sensor0.top, sensor0.right, sensor0.bottom);
motion();
canvas.drawRect(rectangle0, red_fill);
canvas.drawPath(wallpath, red_fill);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
这是图纸的初始化:
protected void SenStart(Canvas canvas){
robot.x1 = getWidth() /2 - 100;
robot.y1 = getHeight()/2 + 40;
robot.x2 = getWidth() /2 - 100;
robot.y2 = getHeight()/2 -80;
robot.x3 = getWidth()/2;
robot.y3 = getHeight()/2 -140;
robot.x4 = getWidth() /2 + 100;
robot.y4 = getHeight()/2 -80;
robot.x5 = getWidth() / 2 + 100;
robot.y5 = getHeight() / 2 + 40;
wallpath.moveTo( robot.x1, robot.y1); // used for first point
wallpath.lineTo( robot.x2, robot.y2);
wallpath.lineTo( robot.x3, robot.y3);
wallpath.lineTo( robot.x4, robot.y4);
wallpath.lineTo( robot.x5, robot.y5);
wallpath.lineTo( robot.x1, robot.y1); // used for first point
sensor0.left = getWidth() /2 - 150;
sensor0.bottom = getHeight()/2 - 20;
sensor0.right = getWidth()/2 - 130;
sensor0.top = getHeight()/2;
}
}
这是我向这些对象添加动作的地方:
private void motion (){
robot.y1 = robot.y1 -1;
robot.y2 = robot.y2 -1;
robot.y3 = robot.y3 -1;
robot.y4 = robot.y4 -1;
robot.y5 = robot.y5 -1;
wallpath.moveTo(robot.x1, robot.y1); // used for first point
wallpath.lineTo( robot.x2, robot.y2);
wallpath.lineTo( robot.x3, robot.y3);
wallpath.lineTo( robot.x4, robot.y4);
wallpath.lineTo( robot.x5, robot.y5);
wallpath.lineTo( robot.x1, robot.y1); // used for first point
sensor0.top = sensor0.top -1;
sensor0.bottom = sensor0.bottom -1;
}
答案 0 :(得分:0)
如果有人需要它,要删除您需要编写的屏幕路径
在你写新点之前nameofthepath.reset()
。