采集的小蜜蜂 发表于 2021-7-28 17:18

【安卓】用Canvas画一个扇形图的切割

本帖最后由 采集的小蜜蜂 于 2021-7-29 08:54 编辑

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

涛之雨 发表于 2021-7-29 09:03

本帖最后由 涛之雨 于 2021-7-29 09:06 编辑

采集的小蜜蜂 发表于 2021-7-29 08:13
本来我也想这么做的,但是网上查了查容易出现OOM
是不是没写好导致的呢?这种写法不是很广泛的用于基于canvas的h5小游戏么?
随变开的一个基于canvas的h5页游。


魔术师的低语 发表于 2021-7-28 17:35

用arcTo凑个字数

采集的小蜜蜂 发表于 2021-7-28 18:04

魔术师的低语 发表于 2021-7-28 17:35
用arcTo凑个字数

确实画出来了,但是不知道怎么控制小扇形的半径,大扇形减小扇形

涛之雨 发表于 2021-7-28 20:20

贴图然后通过点击位置判断?

采集的小蜜蜂 发表于 2021-7-29 08:13

涛之雨 发表于 2021-7-28 20:20
贴图然后通过点击位置判断?

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

采集的小蜜蜂 发表于 2021-7-29 08:53

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自己画图很费劲,还是取像素值的透明值比较靠谱{:1_918:},
页: [1]
查看完整版本: 【安卓】用Canvas画一个扇形图的切割