Android:在另一个形状内绘制形状

时间:2017-10-09 08:12:14

标签: android xamarin.android

我想在另一个椭圆形状内画一个椭圆形,但第二个应该在到达第一个椭圆形边框时切掉。

这是理想的结果:

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

  

我想在另一个椭圆形状内画一个椭圆形,但第二个应该在到达第一个椭圆形边框时切掉。

正如pskink所说,您可以使用PorterDuffXfermode来实现此功能,这里很简单:

public class DrawView : View
{
    public DrawView(Context context):base(context)
    {
    }

    protected override void OnDraw(Canvas canvas)
    {
        base.OnDraw(canvas);

        Paint paint = new Paint();
        paint.SetARGB(255, 255, 0, 0);
        RectF oval2 = new RectF(60, 100, 300, 200);
        canvas.DrawOval(oval2, paint);

        //PorterDuff.Mode.SrcAtop means Discards the source pixels that do not cover destination pixels. Draws remaining source pixels over destination pixels
        paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.SrcAtop));

        paint.Color = Color.Black;
        RectF oval3 = new RectF(110, 150, 350, 250);
        canvas.DrawOval(oval3, paint);

        this.SetLayerType(LayerType.Software, null);
        paint.SetXfermode(null);
    }
}

效果:

enter image description here