protected void onDraw(Canvas canvas) {
	// TODO Auto-generated method stub
	super.onDraw(canvas);
	
	//构造两个画笔,一个红色,一个绿色
	Paint paint_green = generatePaint(Color.GREEN, Style.STROKE, 3);
	Paint paint_red   = generatePaint(Color.RED, Style.STROKE, 3);
	
	//构造一个矩形
	Rect rect1 = new Rect(0,0,400,220);
	//在平移画布前用绿色画下边框
	canvas.drawRect(rect1, paint_green);
	
	//平移画布后,再用红色边框重新画下这个矩形
	canvas.translate(100, 100);
	canvas.drawRect(rect1, paint_red);
}
private Paint generatePaint(int color,Paint.Style style,int width)
{
	Paint paint = new Paint();
	paint.setColor(color);
	paint.setStyle(style);
	paint.setStrokeWidth(width);
	return paint;
}这段代码中,对于同一个矩形,在平移画布前利用绿色画下矩形边框,在平移后,再用红色画下矩形边框。大家是不是会觉得这两个边框会重合?实际结果是这样的。
前后调用的是一个canvas对象,但是,这个对象并不是直接被图形赋值,这个对象实际上是生出用来画图的“图层”,但其本身不是,每次调用draw等函数,便完成了一个图层,所以尽管调用的是canvas同一个对象,实际上调用的是不同的图层
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/nimeghbia/article/details/48101299