2

我想在 android canvas 上绘制类似于这种形状的东西:

http://i.imgur.com/eQOHz.png

我认为最好的方法是将这个形状定义为 2 个圆和一条线的交集。用 android canvas 创建这个的正确方法是什么?

更新 我现在按照 smith324 的建议使用 PorterDuff:

*注意:为清楚起见,代码略微简化。

darkPaint = new Paint();
darkPaint.setColor(Color.rgb(50, 50, 50));

lightPaint = new Paint();
lightPaint.setColor(Color.rgb(200, 200, 200));

atopPaint= new Paint(GameDrawingPanel.darkPaint.getColor());
atopPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP));
atopPaint.setAntiAlias(true);
atopPaint.setStrokeWidth(2);

_boardCanvas.drawCircle(x, y, radius, darkPaint);
_boardCanvas.drawCircle(x, y, radius_small, lightPaint);
_boardCanvas.drawRect(0,0,height,width,atopPaint);
4

1 回答 1

2

我完全忘记了在这里使用哪种模式(XOR 应该可以工作),但基本上你需要使用 PorterDuff 传输模式来实现这一点。尝试将同心圆彼此重叠,然后在一侧绘制一个分割矩形。

http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html

http://www.svgopen.org/2005/papers/abstractsvgopen/

于 2012-10-29T04:39:01.837 回答