天天看點

Android 對Canvas的translate方法總結

方法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());
			}
		}