这期是 HenCoder 自定义绘制的第 1-4 期:Canvas 对绘制的辅助——范围裁切和几何变换。
之前的内容在这里:
HenCoder Android 开发进阶 自定义 View 1-1 绘制基础
HenCoder Android 开发进阶 自定义 View 1-2 Paint 详解
HenCoder Android 开发进阶 自定义 View 1-3 文字的绘制
如果你没听说过 HenCoder,可以先看看这个:
HenCoder:给高级 Android 工程师的进阶手册
简介
一图胜千言,一视频胜千图,走你: class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=s0533qs7j60&width=670&height=376.875&auto=0" style="display: block; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=s0533qs7j60&width=670&height=376.875&auto=0"/>
1 范围裁切
范围裁切有两个方法: clipRect()
和 clipPath()
。裁切方法之后的绘制代码,都会被限制在裁切范围内。
1.1 clipRect()
使用很简单,直接应用:
canvas.clipRect(left, top, right, bottom);
canvas.drawBitmap(bitmap, x, y, paint);
记得要加上 Canvas.save()
和 Canvas.restore()
来及时恢复绘制范围,所以完整代码是这样的:
canvas.save();
canvas.clipRect(left, top, right, bottom);
canvas.drawBitmap(bitmap, x, y, paint);
canvas.restore();
1.2 clipPath()
其实和 clipRect() 用法完全一样,只是把参数换成了 Path
,所以能裁切的形状更多一些:
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();
2 几何变换
几何变换的使用大概分为三