Android画布绘制由多个更简单的形状定义的复杂形状

时间:2012-10-28 23:05:47

标签: android graphics android-canvas shapes

我想在Android画布上绘制类似于这个形状的东西:

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

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

更新 我现在使用PorterDuff作为smith324建议:

*注意:为了清晰起见,代码略有简化。

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);

1 个答案:

答案 0 :(得分:2)

我确切地忘记了这里使用哪些模式(XOR应该可以工作),但实质上你需要使用PorterDuff传输模式来实现这一点。尝试将同心圆绘制在一起,然后在一侧绘制一个分割矩形。

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

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