六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 31|回复: 0

Android canvas的save()和restore()用法

[复制链接]

升级  54%

39

主题

39

主题

39

主题

秀才

Rank: 2

积分
131
 楼主| 发表于 2013-1-28 19:23:29 | 显示全部楼层 |阅读模式
在读Android SDK里面的samples里面游戏的时候,很多时候都看到对canvas的save()和restore()运用。
下面是个小程序,使用了这两个方面,使得旋转红色方块的时候,保证蓝色方块不受影响。
 
 
 
代码如下:
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}        }} 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表