android canvas探究

来源:互联网 发布:网络的拼音怎么写的 编辑:程序博客网 时间:2024/04/30 16:05
protected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.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同一个对象,实际上调用的是不同的图层

0 0
原创粉丝点击