Graphics2D API:Canvas操作

本文详细介绍了AndroidCanvasAPI中的画布变换(平移、旋转、缩放、倾斜)、裁剪功能以及保存和恢复画布状态的方法,为开发者在图形绘制中提供了深入理解和实践指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Graphics2D API:Paint类、Canvas类中已经介绍了Canvas基本的绘图方法,本篇介绍一些基本的画布操作.

注意:
1、画布操作针对的是画布,而不是画布上的图形
2、画布变换、裁剪影响后续图形的绘制,对之前已经绘制过的内容没有影响

一、画布变换
1、平移(translate)

画布平移,画布的原始状态是以左上角为原点,向右是x轴正方向,向下是y轴正方向.

img

public void translate(float dx, float dy)
平移画布,其实就是平移坐标系,dx、dy分别代表水平、竖直方向平移的距离

注意:平移是基于当前起点平移
例:最初起点是(0,0),第一次平移translate(100,100)后起点变为(100,100)
再平移一次translate(200,200)后起点变为(300,300)

测试

在这里插入图片描述

    private void gogogo(Canvas canvas) {
   
   
        mPaint.setStyle(Paint.Style.FILL);
        mPaint.setColor(Color.GRAY);

        canvas.translate(100, 100);
        Rect rect = new Rect(0, 0, 100, 100);
        canvas.drawRect(rect, mPaint);

        canvas.translate(100, 100);
        mPaint.setColor(Color.BLUE);
        canvas.drawRect(rect, mPaint);
    }
2、旋转(rotate)

画布旋转,默认是围绕坐标原点(0,0)来旋转的,也可以指定旋转中心

在这里插入图片描述

public void rotate(float degrees)
degrees:旋转度数,>0顺时针旋转,<0逆时针旋转
以默认原点(0,0)旋转将画布旋转degrees度数

public final void rotate(float degrees, float px, float py)(px,py)为旋转中心将画布旋转degrees度数

测试

    private void gogogo(Canvas canvas) {
   
   
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeWidth(10);
        mPaint.setColor(Color.RED);

        Rect rectCanvas = new Rect(0, 0, canvas.getWidth(), canvas.getHeight());
        Rect rect = new Rect(300, 300, 400, 400);

        canvas.drawRect(rectCanvas, mPaint);//绘制画布矩形边框,方便观察
        canvas.drawRect(rect, mPaint);

        canvas.rotate(30);//旋转

        mPaint.setColor(Color.BLUE);
        canvas.drawRect(rectCanvas, mPaint);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Archie_java

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

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

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

打赏作者

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

抵扣说明:

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

余额充值