Android canvas详解(不断更行ing)

本文详细介绍了Android中Canvas的使用,包括旋转绘制、状态保存与回滚以及图片叠加相交操作。在旋转部分,强调了canvas.rotate方法的默认旋转中心。通过canvas.save()和canvas.restore()实现不同旋转效果的矩形绘制。最后,介绍了使用Paint.setXfermode结合PorterDuffXfermode模式进行图片叠加的高级技巧。

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

      Canvas在Android里是一个重要的类,主要功能显而易见,用于绘图,说这个类重要,除了基本的绘图功能,主要原因在于每一个控件都离不开它,尤其是当我们自定义一个控件时在onDraw方法里,主要利用canvas这个类去处理,而这个类方法众多,能实现的功能也很多,今天开始不间断更新相关内容,大家也一起讨论下:

step  1:旋转 也就是涉及到canvas.rotate相关的方法

       在我刚开始用canvas进行绘图的时候曾经犯了一个错误就是canvas.rotate(angle),这个方法我以为是它是以画布中心点去旋转,结果画出的图总是和预想的不太一样,后来发现默认的旋转中心是左上角的(0,0)点,切记。此外旋转还提供了另一个方法canvas.rotate(angle,x,y)方法,用这个方法可以实现基于某一点去旋转的功能。并且这个旋转可以理解为先按照不旋转状态绘制出形状,然后画布进行了旋转。

step 2: Canvas 状态的保存和回滚(canvas.save(),canvas.restore())

            这个的用法,举个例子大家就明白了,比方说我想化两个矩形,第一个旋转30度,第二个不旋转,这个怎么做呢?

                //首先存储下当前的画布状态(也就是未进行旋转)

                canvas.save();

                //以矩形中心旋转30度,当前的画布状态为以10,10为中旋转了30度
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值