献祭 逆命 回转的一刻钟

自定义View日常,Canvas辅助绘制工作。画布这玩意用的好可以省下不少绘制的代码,大概就是通过控制画布的移动,剪切等来进行绘制,方便实用。

Canvas.save() 和 Canvas.restore()

  • Canvas.save() 记录当前画布状态
  • Canvas.restore() 讲画布回复到记录之前的状态

这哥俩通常都是成双成对出现。在你准备瞎jier操作你的画布之前先save一下,之后旋转跳跃什么的随意,当一顿操作完以后滴啊用restore方法就可以讲画布回复到save时的状态。

范围裁切

canvas.clipRect(left, top, right, bottom);
canvas.drawBitmap(bitmap, x, y, paint);
canvas.save();
canvas.clipPath(path1);
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
canvas.restore();

canvas.save();
canvas.clipPath(path2);
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
canvas.restore();

两种方法,都是将画布限制在规定的范围里面,当绘制东西的时候超出了限制的范围,超出部分就会被裁剪掉。

几何变换分三类

  • 使用 Canvas 来做常见的二维变换,常用变换
  • 使用 Matrix 来做常见和不常见的二维变换,矩阵
  • 使用 Camera 来做三维变换
Canvas 的常见的二维变换
  • Canvas.translate(float dx, float dy) 平移画布
  • Canvas.rotate(float degrees, float px, float py) 旋转画布
  • Canvas.scale(float sx, float sy, float px, float py) 放大缩小画布
  • Canvas.skew(float sx, float sy) 错切

使用这些方法的时候,在代码执行的时候会是倒叙执行,也就是当你代码写的是先translate然后再rotate时,它会先旋转再移动。


Over 伤心的时候笑笑就好了。

献祭 逆命 回转的一刻钟_第1张图片
呔嘞嘻嘻嘻

你可能感兴趣的:(献祭 逆命 回转的一刻钟)