Android canvas的save()和restore()用法
在读Android SDK里面的samples里面游戏的时候,很多时候都看到对canvas的save()和restore()运用。下面是个小程序,使用了这两个方面,使得旋转红色方块的时候,保证蓝色方块不受影响。
http://www.agoit.com/upload/picture/pic/41820/6db23f0c-4888-3c68-a3ba-f28a89a90a6d.png
代码如下:
package com.ray.test;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Bundle;import android.view.SurfaceHolder;import android.view.SurfaceView;public class Test extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } class MyView extends SurfaceView implements SurfaceHolder.Callback{ private SurfaceHolder mHolder; private Canvas canvas;public MyView(Context context) {super(context);mHolder = getHolder();mHolder.addCallback(this);}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}@Overridepublic void surfaceCreated(SurfaceHolder holder) {canvas = mHolder.lockCanvas();Paint mPaint = new Paint();mPaint.setColor(Color.BLUE);canvas.drawRect(100, 200, 200, 300, mPaint);canvas.save();canvas.rotate(45);mPaint.setColor(Color.RED);canvas.drawRect(150, 10, 200, 60, mPaint);canvas.restore();mHolder.unlockCanvasAndPost(canvas);}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// TODO Auto-generated method stub} }}
页:
[1]