Estoy aprendiendo Android escribiendo un juego y tengo un problema con la API de gráficos.Dibujar mapa de bits en el clip actual en el lienzo con borde (Pintura)
Quiero dibujar una imagen en la forma de un Camino y luego añadir un borde en el Camino. Pude recortar la imagen con Path pero no puedo encontrar una forma de agregarle borde. Pensé que sería simple porque la API admite el objeto Paint en los métodos Canvas.draw *.
actualización
En la pregunta original, mi ruta contiene dos rectángulos y Christopher @-Souvey contestadas correctamente. Sin embargo, tengo otro problema cuando trato de agregar otro método clipPath().
Actualicé el código anterior añadiendo un círculo más a la ruta. Aquí está mi nuevo código:
Bitmap srcImage = BitmapFactory.decodeStream(getAssets().open("panda.jpg"));
Bitmap bitmapResult = Bitmap.createBitmap(srcImage.getWidth(), srcImage.getHeight(), Bitmap.Config.ARGB_8888);
Path path = new Path();
// This is my border
Paint paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setColor(Color.RED);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);
Canvas canvas = new Canvas(bitmapResult);
// Overlay two rectangles
path.addRect(10, 10, 70, 70, Path.Direction.CCW);
path.addRect(40, 40, 120, 120, Path.Direction.CCW);
canvas.drawPath(path , paint);
canvas.clipPath(path, Region.Op.INTERSECT);
path.reset();
path.addCircle(40, 80, 20, Path.Direction.CCW);
canvas.drawPath(path , paint);
canvas.clipPath(path, Region.Op.DIFFERENCE);
// The image is drawn within the area of two rectangles and a circle
// Although I suppose that puting Paint object into drawBitmap() method will add a red border on result image but it doesn't work
canvas.drawBitmap(srcImage, 0, 0, paint);
((ImageView)this.findViewById(R.id.imageView1)).setImageBitmap(bitmapResult);
aquí es el resultado de mi código: http://i.stack.imgur.com/8j2Kg.png
Y esto es lo que espero: http://i.stack.imgur.com/iKhIr.png
¿Me echo nada para hacer que funcione?
El elemento de pintura en drawBitmap no es el color del borde: http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap(android.graphics.Bitmap, android.graphics.Matrix, android. graphics.Paint) –
Podemos crear bordes con drawRect(), drawCircle() con Paint. ¿Cómo es que no funciona para drawBitmap() –