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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011118524/article/details/78219371

在上一篇博客中,介绍了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

效果图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u011118524/article/details/78219371