2017-10-09 12 views
2

もう1つの楕円形の中に楕円形を描きたいが、最初の罫線の境界に達したときに2番目の楕円形を切り取る必要がある。Android:別の形状の中に形を描く

これは望ましい結果である。これを達成することができる方法

+2

が見\t 'android.graphics.PorterDuffXfermode' 、それ以上は:http://ssp.impulsetrain.com/porterduff.html – pskink

答えて

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

+0

それは動作します!ありがとうございました! –