Canvas 基本用法学习笔记

Canvas


直面意思是画布,其实是分装的一个工具类

一个Canvas类对象有四大基本要素

1、一个是用来保存像素的bitmap  -----  画板
2、一个Canvas在Bitmap上进行绘制操作 ---- 画布或者画纸(Layer---saveLayer操作时,新建一个透明的画布图层)
3、绘制的东西
4、绘制的画笔Paint

把我们的Canvas比喻成一块画板,为什么?

今天的学习目标:
1、了解Canvas可以用来画些什么东西

除了常用的形状之外

画Region --- 区域的意思,它表示的Canvas图层上的一块封闭的区域

//创建一块矩形的区域
paint.setColor(Color.RED);
paint.setStrokeWidth(2);
paint.setStyle(Paint.Style.STROKE);

Rect rect = new Rect(100,100,500,600);
Region region = new Region(rect);

Rect rect5 = new Rect(0,200,900,500);
Region region1 = new Region(rect5);

region1.op(region, Region.Op.XOR);
RegionIterator regionIterator = new RegionIterator(region1);
Rect rect1 = new Rect();
while (regionIterator.next(rect1)){
    canvas.drawRect(rect1,paint);
}


有以下几种方式:----具体含义 看图
DIFFERENCE(0),
        INTERSECT(1),
        UNION(2),
        XOR(3),
        REVERSE_DIFFERENCE(4),
        REPLACE(5);

2、Canvas的变换技巧----了解Canvas里面的坐标系

Canvas里面牵扯两种坐标系:Canvas自己的坐标系、绘图坐标系

Canvas的坐标系,
它就在View的左上角,做坐标原点往右是X轴正半轴,往下是Y轴的正半轴,有且只有一个,唯一不变
绘图坐标系

它不是唯一不变的,它与Canvas的Matrix有关系,当Matrix发生改变的时候,绘图坐标系对应的进行改变,
同时这个过程是不可逆的(save和restore方法来保存和还原变化操作)
Matrix又是通过我们设置translate、rotate、scale、skew来进行改变的

3、Canvas的状态保存---状态栈、Layer栈

状态栈--save、 restore方法来保存和还原变换操作Matrix以及Clip剪裁
也可以通过restoretoCount直接还原到对应栈的保存状态

Layer栈--- saveLayer的时候都会新建一个透明的图层(离屏Bitmap-离屏缓冲),并且会将saveLayer之前的一些Canvas操作延续过来
 后续的绘图操作都在新建的layer上面进行
 当我们调用restore 或者 restoreToCount 时 更新到对应的图层和画布上




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值