【安卓】用Canvas画一个扇形图的切割
本帖最后由 采集的小蜜蜂 于 2021-7-29 08:54 编辑用Path画一个,我用moveto,lineto,quadto连在一起,贝塞尔曲线居然失效了。因为要判断点击事件,所以只能用Path
本帖最后由 涛之雨 于 2021-7-29 09:06 编辑
采集的小蜜蜂 发表于 2021-7-29 08:13
本来我也想这么做的,但是网上查了查容易出现OOM
是不是没写好导致的呢?这种写法不是很广泛的用于基于canvas的h5小游戏么?
随变开的一个基于canvas的h5页游。
用arcTo凑个字数 魔术师的低语 发表于 2021-7-28 17:35
用arcTo凑个字数
确实画出来了,但是不知道怎么控制小扇形的半径,大扇形减小扇形 贴图然后通过点击位置判断? 涛之雨 发表于 2021-7-28 20:20
贴图然后通过点击位置判断?
本来我也想这么做的,但是网上查了查容易出现OOM 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 09:03
是不是没写好导致的呢?这种写法不是很广泛的用于基于canvas的h5小游戏么?
随变开的一个基于canvas的h5 ...
OOM是各位网友说的,所以之前没有试。现在替换成你写的这种方法了,因为用Path自己画图很费劲,还是取像素值的透明值比较靠谱{:1_918:},
页:
[1]