31_Android Canvas 类简单介绍

我们在自定义 View 的时候,经常会重写 onDraw() 方法来绘制自己想要的效果。下面会介绍该方法中一个重要的类 Canvas 类的一些操作方法。

绘制各种内容

// 文字
canvas.drawText("开始写字了!",50, 50, mPaint);  

// 圆形
canvas.drawCircle(200, 200, 100, mPaint);

// 线条
canvas.drawLine(100, 100, 300, 300, mPaint);

// 椭圆
RectF oval = new RectF(150, 200, 500, 400);
canvas.drawOval(oval, mPaint);

// 矩形
canvas.drawRect(100,100, 200, 200, mPaint);  
// 圆角矩形    
RectF oval3 = new RectF(80, 260, 200, 300);   
canvas.drawRoundRect(oval3, 20, 5, mPaint);

// 点
// 一个点
canvas.drawPoint(60, 390, mPaint);
// 多个点
canvas.drawPoints(new float[]{60,400,65,400,70,400}, mPaint);

// 图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);   
canvas.drawBitmap(bitmap, 200,300, mPaint);

旋转、平移、缩放操作

// 平移
 canvas.translate(100, 50);

//缩放
// 初始原点
canvas.scale(2, 4);
// 可变原点
canvas.scale(2, 4,100,100);

// 旋转
// 默认以原点为中心进行旋转
canvas.rotate(30);
// 自定义中心进行旋转
canvas.rotate(30,100,100);

Canvas 状态保存和还原

Canvas 提供了几个方法,让我们可以方便的对 Canvas 的状态进行更改和还原。

我们在对 Canvas 进行平移、旋转、放大等操作时候,可以调用 save() 方法,将当前修改过的 Canvas 状态进行保存,调用 restore() 方法后,会将 Canvas 还原成最近的一个 save() 的状态。

save() 方法还会有一个返回值,我们也可以调用 restoreToCount(int saveCount) 方法,将这个返回值作为参数传递进去,就可以将 Canvas 还原成某一个特定的 save() 状态。

canvas.translate(100,100); // 平移(100,100)
 int save1 = canvas.save(); // 保存Canvas状态(状态1)
 canvas.scale(2, 2); // 放大2倍
 int save2 = canvas.save(); // 保存Canvas状态(状态2)
 canvas.restore(); // 返回最新的save状态,即状态2
 canvas.restoreToCount(save1);// 手动指定的返回到 状态1

参考文章:
Android Canvas 方法总结
本文章只是作为自己学习和总结所用,如有使用不当之处可随时@我,谢谢

你可能感兴趣的:(31_Android Canvas 类简单介绍)