Canvas相关知识点介绍

Canvas号称画布,Paint为画笔,但是呢,Canvas又不支持空参构造,必须基于Bitmap,通过重写view的onDraw返回的canvas对象另说,下面介绍一些比较重要的知识点:

Canvas有两个坐标系,一个是Canvas坐标,另外一个为绘制坐标
刚开始这两个坐标系是重合的,但是一旦Canvas做了相关处理,如:平移(Canvas.translate、旋转、缩放、skew(扭曲)等),那么绘制坐标则会改变,然后后续在Canvas上面绘制的元素也会基于绘制坐标系来绘制,但是Canvas变化之前的已绘制完成的元素不会变,通俗点说,这些操作就像是虽然你的笔还是原来的地方画,但是画纸旋转或者移动了,所以你画的东西的方位就产生变化。

Canvas经常会用到save和restore方法,为了方便一些转换操作,Canvas 提供了保存和回滚属性的方法(save和restore),比如你可以先保存目前画纸的位置(save),然后向左移动100像素后画一些图形,画完后调用restore方法返回到刚才保存的位置。
Canvas里面的save会将图层保存至“栈”,restore则会将上次保存的操作取消,如:

canvas.save();
canvas.translate(10.0f, 10.0f);
canvas.drawBimap1();
canvas.restore();
canvas.drawBitmap2();

上面的drawBimap1()会基于canvas平移后的绘制坐标系,但是drawBitmap2则不会在平移后的坐标系上绘制,应为restore会恢复至上次save的状态,基于此状态绘制坐标系来绘制。
当然,Canvas还有restoreToCount(saveCount)方法:

 * Example:
 *    int count = canvas.save();
 *    ... // more calls potentially to save()
 *    canvas.restoreToCount(count);
 *    // now the canvas is back in the same state it was before the initial
 *    // call to save().

通过上面的示例应该能明白这个方法的用途了。

Canvas还有很多的方法:
这里写图片描述

通过这些方法能实现很多我们想要的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二竹本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值