1.2.8_Canvas的使用

平移操作

通过translate进行平移,可以看到,起始点往右侧、下侧平移了50

canvas.drawRect(0,0, 400, 400, mPaint);
canvas.translate(50, 50);
mPaint.setColor(Color.GRAY);
canvas.drawRect(0,0, 400, 400, mPaint);
canvas.drawLine(0, 0, 600,600, mPaint);  

在这里插入图片描述

缩放操纵

如果对绘图进行缩放,所有之后的绘图也会被缩放。定位也会被缩放。如果您 scale(2,2),那么绘图将定位于距离画布左上角两倍远的位置。

canvas.drawRect(200,200, 700,700, mPaint);
canvas.scale(0.5f, 0.5f);
mPaint.setColor(Color.BLUE);
canvas.drawRect(200,200, 700,700, mPaint);
//先translate(px, py),再scale(sx, sy),再反响translate
canvas.scale(0.5f, 0.5f,500,0);
mPaint.setColor(Color.GRAY);
canvas.drawRect(200,200, 700,700, mPaint);

在这里插入图片描述

旋转操作

canvas.translate(50,50);
canvas.drawRect(0,0, 700,700, mPaint);
canvas.rotate(45);
mPaint.setColor(Color.GRAY);
canvas.drawRect(0,0, 700,700, mPaint);

mPaint.setColor(Color.BLUE);
canvas.drawRect(400, 400, 900, 900, mPaint);
canvas.rotate(45, 650, 650); //px, py表示旋转中心的坐标
mPaint.setColor(Color.GREEN);
canvas.drawRect(400, 400, 900, 900, mPaint);

在这里插入图片描述

倾斜操作

canvas.drawRect(0,0, 400, 400, mPaint);
//canvas.skew(1, 0); //在X方向倾斜45度,Y轴逆时针旋转45
canvas.skew(0, 1); //在y方向倾斜45度, X轴顺时针旋转45
mPaint.setColor(Color.GRAY);
canvas.drawRect(0, 0, 400, 400, mPaint);
mPaint.setColor(Color.BLUE);
canvas.drawCircle(300,300,200,mPaint);  

在这里插入图片描述

切割操作

裁剪画布内区域
canvas.drawRect(200, 200,700, 700, mPaint);
mPaint.setColor(Color.GRAY);
canvas.drawRect(200, 800,700, 1300, mPaint);
canvas.clipRect(200, 200,700, 700); //画布被裁剪
mPaint.setColor(Color.BLUE);
canvas.drawCircle(200,600, 100,mPaint); //坐标超出裁剪区域,无法绘制
mPaint.setColor(Color.GREEN);
canvas.drawCircle(300, 300, 100, mPaint); //坐标区域在裁剪范围内,绘制成功

在这里插入图片描述

画布裁剪外的区域
canvas.drawRect(200, 200,700, 700, mPaint);
mPaint.setColor(Color.GRAY);
canvas.drawRect(200, 800,700, 1300, mPaint);
canvas.clipOutRect(200,200,700,700); //画布裁剪外的区域
canvas.drawCircle(100,100,100,mPaint); //坐标区域在裁剪范围内,绘制成功
canvas.drawCircle(300, 300, 100, mPaint);//坐标超出裁剪区域,无法绘制

在这里插入图片描述

矩阵

Matrix 可进行旋转、位移、缩放等操作

canvas.drawRect(0,0,700,700, mPaint);
Matrix matrix = new Matrix();
//matrix.setTranslate(50,50); //位移
//matrix.setRotate(45); //旋转
matrix.setScale(0.5f, 0.5f); //缩放
canvas.setMatrix(matrix);
mPaint.setColor(Color.GRAY);
canvas.drawRect(100,100,700,700, mPaint);  

setTranslate:位移
在这里插入图片描述

setRotate:旋转
在这里插入图片描述

setScale:缩放
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值