android canvas 使用操作

4 篇文章 0 订阅
1 篇文章 0 订阅

最近在学习自定 View 的内容,发现其实在 onDraw() 的时候可以对 Canvas 进行各种各样的操作,比如平移、旋转、缩放、倾斜当然还有切割画布和反向切割画布。下面就来根据实际操作介绍一下。

1.平移 translate

        //先设置画笔
        mPaint.setStrokeWidth(5);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setColor(Color.RED);     
        //平移   
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.translate(50, 50);
        mPaint.setColor(Color.YELLOW);
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.translate(-100, -100);
        mPaint.setColor(Color.BLUE);
        canvas.drawRect(0, 0, 500, 500, mPaint);

第一步就是先画一个矩形用来做参照,然后对画布进行一个平移操作 canvas.translate(50, 50); 第一个参数是 x 轴平移距离,第二个是 y 平移的距离,平移后我们设置一下画笔颜色然后再画一个矩形,效果如下图

 

2.缩放 scale

        //缩放
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.scale(0.5f, 0.5f);
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.scale(1.5f, 1.5f);
        canvas.drawRect(0, 0, 500, 500, mPaint);

 

缩放有一个重载的方法  canvas.scale(0.5f, 0.5f, 500, 500);

前面还是 x y 缩放的比列,后面的两个参数表示的是坐标点,保持哪个点不变然后开始缩放

保持右下角的点不变效果如下

3.旋转 rotate

        //旋转
        canvas.translate(400, 400);
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.rotate(45);
        mPaint.setColor(Color.BLUE);
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.rotate(45,250,250);
        mPaint.setColor(Color.GREEN);
        canvas.drawRect(0, 0, 500, 500, mPaint);

旋转是按照角度旋转的,也有一个重载的方法表示你按照哪个点进行旋转。效果如下

第一次旋转后,第二次再设置表示在旋转的基础上再进行相应的操作

4.倾斜 skew

这个有两个参数 sx、sy 这些都是 float 类型

倾斜是根据 三角函数中的 正切函数tan(A)=a/b,就是说对边比邻边

1就是45度

        //倾斜
        canvas.drawRect(0, 0, 500, 500, mPaint);
        canvas.skew(1, 0);//倾斜是按照 tan 1就是45度
        mPaint.setColor(Color.BLUE);
        canvas.drawRect(0, 0, 500, 500, mPaint);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值