Android canvas rotate方法的理解

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画布来看我的操作和之前没有任何变化,还是简单的画矩形 

从手机屏幕来看就发生了变化.

 还有一点值得注意的是每次参考坐标的变化都是依赖上一次坐标变化的操作是叠加的结果


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值