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