Canvas的基本使用——常用的Api方法介绍(二)

来源:互联网 发布:上海大数据开放平台 编辑:程序博客网 时间:2024/05/19 16:50

在上一篇博客中,介绍了Canvas常用的绘制方法,在这篇博客中,将继续对Canvas的常用方法进行介绍。

Canvas的save方法:

/*** 保存当前画布的矩阵Matrix信息和切割clip信息,并返回一个代表当前状态的一个状态值,* 通过这个状态值,我们可以在之后把画布恢复到这个状态,保证了绘制不会出错和紊乱。* @return 返回状态值*/public int save();/*** @param saveFlags * @return 返回状态值*/public int save(int saveFlags);/*** saveLayer是新建一个图层,这个与save方法的本质区别,save方法不新建图层,并把当前图层的状态id返回,*/public int saveLayer(float left, float top, float right, float bottom, @Nullable Paint paint);/*** 返回到上一个的图层状态,*/public void restore();/*** 返回到指定的图层状态*/public void restoreToCount(int saveCount);

save方法与restore方法一般都是成对出现的。新建图层是有内存消耗的,所以能用save方法实现的操作,尽量不用saveLayer方法。

Canvas的translate方法:

画布的平移方法

/**  * 画布向(100,50)方向平移  *   * 参数1: 向X轴方向移动100距离  * 参数2: 向Y轴方向移动50距离    */ canvas.translate(100, 50);

Canvas的scale缩放方法:

/** * 默认以坐标原点为缩放原点 * 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍  * 参数1: X轴的放大倍数  * 参数2: Y轴的放大倍数  */canvas.scale(2, 4);/**  * 在X轴方向放大为原来2倍,Y轴方向方大为原来的4倍  * 参数1: X轴的放大倍数  * 参数2: Y轴的放大倍数  * 参数3: 原点X坐标 * 参数4: 原点Y坐标 */canvas.scale(2, 4100,100);

效果:
这里写图片描述

Canvas的旋转方法rotate:

/**  * 原点为中心,旋转30度(顺时针方向为正方向 ) * 参数: 旋转角度  */canvas.rotate(30);/**  * 以(100,100)为中心,旋转30度,顺时针方向为正方向  * 参数: 旋转角度  */canvas.rotate(30,100,100);

效果图:
这里写图片描述

Canvas操作例子

 Paint p = new Paint(); p.setColor(Color.argb(50,255,100,100)); canvas.drawRect(0,0,200,200,p); // 以原始Canvas画出一个矩形1 canvas.translate(300,300); // 将Canvas平移  (100,100) p.setColor(Color.argb(50,100,255,100)); canvas.drawRect(0,0,200,200,p); //  矩形2 canvas.rotate(30); //将Canvas旋转30 p.setColor(Color.argb(50,100,0,255)); canvas.drawRect(0,0,200,200,p); // 矩形3 canvas.scale(2, 2); // 将Canvas以原点为中心,放大两倍 p.setColor(Color.argb(50,255,255,0)); canvas.drawRect(0,0,200,200,p); // 矩形4

效果图:
这里写图片描述

原创粉丝点击