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