2010-03-08 11 views
16

que utilizan el siguiente código para dibujar un mapa de bits durante onDraw de una costumbre VerPaint.setShadowLayer androide (vs) Canvas.drawbitmap() problemas

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); 
p.setShadowLayer(3,3,3,0xff000000); 
Bitmap bmp = BitmapFactory.decodeResource(some drawable jpg); 
canvas.drawBitmap(bmp,null,new Rect(blah blah),p); 

y la sombra se ve rara. ¿Qué quiero decir gracioso? Quiero decir que tengo una sombra diferente si llamara a canvas.drawRect(). Parece que el código de sombra de Android está tratando el mapa de bits como un canal alfa o algo así.

han intentado agregar p.setColor (0xff000000); y p.setStyle (Paint.Style.FILL); pero no la diferencia

Supongo que podría dibujar Rect con shadow on, luego drawBitmap con shadow off, pero parece tonto ya que sería renderizar píxeles dos veces.

+4

en este caso: una imagen dice más de 1000 palabras. Agregue una captura de pantalla – WarrenFaith

Respuesta

-1

Tal vez deberías tener diferentes objetos de pintura para diferentes propósitos como texto, mapa de bits, etc. Así que la configuración de uno no afectará a los demás.

+0

Solo estoy haciendo una operación de dibujo y, por lo tanto, tengo solo un objeto Paint. por favor vuelve a leer mi pregunta y código. – SteelBytes

2

Básicamente, la capa de sombra no funciona para nada excepto para el texto. Es realmente tonto. Compruebe el Android hardware acceleration supported operations chart.

Esta pregunta se formuló en 2010 cuando los árboles de vista acelerada por hardware no existían ... basándome en las cosas que había leído, incluso entonces la capa de sombra solo funcionaba para formas simples (si es que lo hacía) y otras se ponían raras resultados usándolo en cualquier cosa menos texto. Puede que no tenga suerte.

Por último, hay muchas formas de falsificar una capa de sombra. Puede envolver una vista en otra vista y dibujar debajo de ella. Puede escribir una vista que dibuje la sombra usted mismo como un degradado radial, etc. Pero probablemente solo quiera hacer un parche 9 que se vea como una sombra y usarlo.