canvas的save和restore
2016-01-06 09:55
363 查看
经过画图琢磨,终于理解 canvas的save和restore的用意了,上效果图和:代码
左下角画一个圆、中间画一个向右箭头、右上角画一个圆
使用了restore的效果如下:
不使用restore的效果如下:
左下角画一个圆、中间画一个向右箭头、右上角画一个圆
使用了restore的效果如下:
不使用restore的效果如下:
/** * 在画布的 左下角画圆, * 中间画向右箭头 :旋转画布后再画 * 右上角画圆:画布旋转为原始方向后再画 * @param canvas */ private void canvasTest(Canvas canvas) { int width = 200; int height = 200; int radius = 10; int centerX = radius; int centerY = height - radius; Paint paint = new Paint(); //画做左下角的圆 paint.setStyle(Style.FILL); paint.setColor(Color.BLUE); paint.setAntiAlias(true); canvas.drawCircle(centerX, centerY, radius, paint); canvas.save(); //画三角形 canvas.rotate(90, width/2, height/2); //以画布中心为旋转点 // canvas.translate(0, -30); // canvas.scale(1.2f, 1.2f, width/2, height/2); paint.setColor(Color.RED); paint.setStyle(Style.STROKE); paint.setStrokeWidth(4); //左线、右线、中线, 把旋转后的当做新画布,但x, y 的坐标仍是原来方向的,但画出的图是旋转后的 //可以想象为先在原始画布上画,画好后旋转 canvas.drawLine(width/2, 0, 0, height/2, paint); canvas.drawLine(width/2, 0, width, height/2, paint); canvas.drawLine(width/2, 0, width/2, height, paint); canvas.restore(); //如果不加这一行,那么下面的那个右上角的圆是 旋转后的画布的右上角,而非原始画布的右上角位置 //右上角画个圆 int cx2 = width - radius; int cy2 = radius; paint.setStyle(Style.FILL); paint.setColor(Color.RED); canvas.drawCircle(cx2, cy2, radius, paint); }
相关文章推荐
- 网络连接
- java小结之练习
- 如何屏蔽Button setClickable与setEnabled
- 初始化openwrt的rootpassword
- JAVA多线程售票问题
- 网页返回码大全
- ReactiveCocoa v2.5 源码解析 之 架构总览
- JpGraph使用详解之中文乱码解决方法
- JpGraph使用详解http://5ydycm.blog.51cto.com/115934/177498 http://www.cnblogs.com/txw1958/archive/2013/08/18/php-charts.html
- Android开发之imageView图片按比例缩放的实现方法
- js实现仿qq消息的弹出窗效果
- 深入浅出数据分析
- 远程推送
- 记一次ganglia的故障分析 mem_report不显示
- 创建自定义的控件
- WP-Polls投票汉化插件(bug修改)
- 2016年最热门的15 款代码语法高亮工具,美化你的代码
- Reduce统计结果汇总混乱
- linux学习----第一课:硬件装置在linux中的文件名及分区
- redis持久化