方法translate(x,y):
平移,将畫布的坐标原點向左右方向移動x,向上下方向移動y.canvas的預設位置是在(0,0).
例子:畫布原點假如落在(1,1),那麼translate(10,10)就是在原點(1,1)基礎上分别在x軸、y軸移動10,則原點變為(11,11)。 用法: 繪制多個對象的時候可以有兩種方法調用: 方法一:
@Override
protected void onDraw(Canvas canvas) {
// 周遊并繪制每一個球形對象
for (int i = 0; i < balls.size(); ++i) {
ShapeHolder shapeHolder = balls.get(i);
canvas.save();();//鎖畫布(為了儲存之前的畫布狀态)
canvas.translate(shapeHolder.getX(), shapeHolder.getY());
shapeHolder.getShape().draw(canvas);
canvas.restore();//把目前畫布傳回(調整)到上一個save()狀态之前
}
}
方法二:
@Override
protected void onDraw(Canvas canvas) {
// 周遊并繪制每一個球形對象
for (ShapeHolder ball : balls) {
// 這裡是canvas.translate到一個地方,進行繪制,之後再translate回來
// 跟先save後restore的作用相同
canvas.translate(ball.getX(), ball.getY());
ball.getShape().draw(canvas);
canvas.translate(-ball.getX(), -ball.getY());
}
}