Canvas 是一个画布是Android系统提供的一个绘图工具类,可以画各种想要的效果,Canvas的获得有两个方法
第一种获取方法在View的ondraw(Canvas canvas)方法中通过参数的方式拿到
第二张获取方法mBitmap = Bitmap.createBitmap(500,500, Bitmap.Config.ARGB_8888); mBitmapCanvas = new Canvas(mBitmap);
官方推荐第一种方式获取
引用部分代码片段:
private int width=600; private int height=400; private void rotate(Canvas canvas) { Paint paint = new Paint(); paint.setColor(getResources().getColor(R.color.pp_main_bg)); paint.setStrokeWidth(20); paint.setStyle(Paint.Style.STROKE); canvas.drawRect(0, 0, width, height, paint); canvas.rotate(45); paint.setColor(getResources().getColor(R.color.red)); canvas.drawRect(0, 0, width, height, paint); canvas.rotate(20); paint.setColor(getResources().getColor(R.color.green)); canvas.drawRect(0, 0, width, height, paint); }
解释一下首先坐标原点是在(0,0)画了一个矩形绿色的;
然后旋转45度画了一个红色矩形
然后旋转20度画了一个蓝色矩形
关于canvas的操作有人说是移动了画布canvas本身,有人说是改变了临时画图坐标系个人认为理解成改变临时坐标系是更容易理解和接受的。
如果理解成画布旋转那么之前画好的是不是也应该跟着旋转了事实上是没有旋转的,而理解成改变了参考坐标系就好理解了,我们还是按照
我们正常的画图方式,只是这个时候我的参考坐标不一样了。
所以得到的效果从canvas画布来看我的操作和之前没有任何变化,还是简单的画矩形
从手机屏幕来看就发生了变化.
还有一点值得注意的是每次参考坐标的变化都是依赖上一次坐标变化的操作是叠加的结果