吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1541|回复: 7
收起左侧

[已解决] 【安卓】用Canvas画一个扇形图的切割

[复制链接]
采集的小蜜蜂 发表于 2021-7-28 17:18
本帖最后由 采集的小蜜蜂 于 2021-7-29 08:54 编辑

用Path画一个,我用moveto,lineto,quadto连在一起,贝塞尔曲线居然失效了。因为要判断点击事件,所以只能用Path
1627463837(1).png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

涛之雨 发表于 2021-7-29 09:03
本帖最后由 涛之雨 于 2021-7-29 09:06 编辑
采集的小蜜蜂 发表于 2021-7-29 08:13
本来我也想这么做的,但是网上查了查容易出现OOM

是不是没写好导致的呢?这种写法不是很广泛的用于基于canvas的h5小游戏么?
随变开的一个基于canvas的h5页游。
image.png

image.png
魔术师的低语 发表于 2021-7-28 17:35
 楼主| 采集的小蜜蜂 发表于 2021-7-28 18:04

确实画出来了,但是不知道怎么控制小扇形的半径,大扇形减小扇形
涛之雨 发表于 2021-7-28 20:20
贴图然后通过点击位置判断?
 楼主| 采集的小蜜蜂 发表于 2021-7-29 08:13
涛之雨 发表于 2021-7-28 20:20
贴图然后通过点击位置判断?

本来我也想这么做的,但是网上查了查容易出现OOM

点评

是不是没写好导致的呢?这种写法不是很广泛的用于基于canvas的h5小游戏么?  详情 回复 发表于 2021-7-29 09:03
 楼主| 采集的小蜜蜂 发表于 2021-7-29 08:53
[Java] 纯文本查看 复制代码
  rectF=new RectF(0,0,mWidth,mHeight);
        rectF2=new RectF(0,0,mWidth,mHeight);
        path1.moveTo(mWidth/2, mHeight/2);
        path1.arcTo(rectF,-180,180);
        rectF2.inset(+100,+100);
        path2.moveTo(mWidth/2, mHeight/2);
        path2.arcTo(rectF2, -180, 180);
        path.op(path2, path1, Path.Op.REVERSE_DIFFERENCE);
        canvas.drawPath(path,paint);

解决了,画两个相同的Recf,然后画两个半圆,用recf2.inset缩小100,然后用Op.REVERSE_DIFFERENCE,把Path1减去path2的区域,得到的就是一个扇形环状区域。
 楼主| 采集的小蜜蜂 发表于 2021-7-29 15:29
涛之雨 发表于 2021-7-29 09:03
是不是没写好导致的呢?这种写法不是很广泛的用于基于canvas的h5小游戏么?
随变开的一个基于canvas的h5 ...

OOM是各位网友说的,所以之前没有试。现在替换成你写的这种方法了,因为用Path自己画图很费劲,还是取像素值的透明值比较靠谱
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 00:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表