6
votes

Remplir Android Arc partiel

Comment puis-je remplir la partie verte entre deux arcs représentés ci-dessous en utilisant les méthodes de peinture et de toile?

Voici comment je dessine les deux arcs, je pouvais également comprendre comment les connecter avec des lignes mais Je ne sais pas comment je peux remplir la zone intérieure. xxx


0 commentaires

3 Réponses :


1
votes

Je sais que cela pourrait être un peu en retard mais je suis venu avec cette approche d'un projet iOS, dessinez d'abord du contour, puis dessinez le remplissage  Entrez la description de l'image ici arc xxx

un lien utile: http://www.programtering.com/a/mdo1cznwate.html où Addarc Maths sont très bien expliqués


0 commentaires

7
votes

Voici un moyen simple de dessiner Arc rempli avec la bordure: xxx

 Résultat de dessin

(le trajet et peinture L'allocation est faite pour être effacée non optimale)


0 commentaires

1
votes

Il suffit de poster une autre option à l'aide du tirelire uniquement. Fondamentalement, nous dessinons d'abord l'arc rempli externe, puis nous dessinons l'arc intérieur plus petit à l'aide de porterduff.mode.clear strong> pour effacer et atteindre les questions ci-dessus.

Bitmap b = Bitmap.createBitmap(1200, 1200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(b);
int radius = 40;
float startAngle = 45f;   // your start angle
float sweepAngle = 90f;   // your sweep angle
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.rgb(37, 181, 215));
paint.setStyle(Paint.Style.FILL);
// draw outer arc
RectF oval = new RectF(0, 0, canvas.getWidth(), canvas.getHeight());
canvas.drawArc(oval, startAngle, sweepAngle, true, paint);
// draw inner arc
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
oval = new RectF((canvas.getWidth() / 2) - radius, (canvas.getHeight() / 2) - radius, (canvas.getWidth() / 2) + radius, (canvas.getHeight() / 2) + radius);
canvas.drawArc(oval, startAngle, sweepAngle, true, paint);

ImageView.setImageBitmap(b);


0 commentaires