Quiero crear una forma de tipo globo de discurso, donde hay un rectángulo o elipse con una forma triangular que sobresale de él.Android: cómo combinar las rutas de dos formas y eliminar la superposición?
Cómo estoy tratando de hacer esto es crear un objeto Path que combine el triángulo con la otra forma (round rect).
lo estoy haciendo como sigue:
Path path = new Path();
// Create triangular segment
Point drawOffset = getAttributes().getDrawOffset();
int leaderGap = getAttributes().getLeaderGapWidth();
// Recall that we have a coordinate system where (0,0) is the
// bottom midpoint of the annotation rectangle.
// the point to left of gap
int x1 = -leaderGap/2;
int y1 = 0;
// the point to right of gap
int x2 = leaderGap/2;
int y2 = 0;
// The point where we're drawing to; the end of the pointy segment of triangle
int x3 = -drawOffset.x;
int y3 = drawOffset.y;
path.moveTo(x2, y2);
path.lineTo(x3, y3);
path.lineTo(x1, y1);
// path.close();
// Add the rectangular portion to the path
path.addRoundRect(backgroundShape, 5, 5, Path.Direction.CW);
El problema es que el RoundRect es un camino cerrado, por lo que su borde se muestra a través debajo de la sección triangular.
vale más que mil palabras de una imagen, así que aquí vamos:
Lo que yo quiero es que el segmento de línea entre los dos puntos extremos del triángulo a desaparecer, por lo que se parezca a uno sin fisuras camino.
Si todo lo que estaba haciendo fuera un rectángulo recto, podría crear todo el camino desde cero. Pero me gustaría hacer las esquinas redondeadas, y sería un poco de pintura hacerlo con The Path (sí, sé que puedes hacer quad to y arcTo pero todavía no es una solución tan limpia como me gusta).
Entonces, en general, ¿es posible combinar dos caminos y crear un solo objeto de unión que trace el perímetro de ambos?