您的位置:首页 > 其它

canvas中的save用法之一

2012-07-19 20:28 141 查看
在读Android SDK里面的samples里面游戏的时候,很多时候都看到对canvas的save()和restore()运用。

下面是个小程序,使用了这两个方面,使得旋转红色方块的时候,保证蓝色方块不受影响 <IGNORE_JS_OP>


2011-4-21 06:26 上传
下载附件 (450.05 KB)

Java代码

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);

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

}

@Override

public 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);

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

// TODO Auto-generated method stub

}

}

}

复制代码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: