¿Cómo puedo obtener una imagen en el lienzo para dibujar en esa imagen?Imagen extraíble en un lienzo
Respuesta
probar esto
Bitmap mBitmap = Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter);
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFAAAAAA);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}
Es necesario para cargar la imagen como mapa de bits:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.your_image);
luego hacer el mapa de bits mutable y crear un lienzo sobre ella:
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
A continuación, puede dibujar en el lienzo.
¿Qué pasa si mi .png es grande y se corta después de ser cargado ? es decir, no quiero recortarlo. Puede ser más grande que la pantalla, luego intentaré hacerlo escalable y móvil. ¿Cómo puedo hacer eso? ¡Muchísimas gracias! –
@ perfectionm1ng vistazo al uso de BitmapRegionDecoder. Permite carga parcial para imágenes grandes. Por lo tanto, debería poder cargar solo la parte de la imagen que está renderizando en este momento. –
Tengo el mismo problema. Estoy usando el código Canvas cs = new Canvas (mapa de bits); Recursos res = getResources(); Bitmap bitmapx = BitmapFactory.decodeResource (res, R.drawable.overlay_good_full); Bitmap bitmapxx = BitmapFactory.decodeResource (res, R.drawable.overlay_bad_full); if (text.equals ("Bueno")) { cs.drawBitmap (bitmapx, 0, 0, tPaint); } else { cs.drawBitmap (bitmapxx, 0, 0, tPaint); } –
package com.android.jigsawtest;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class SurafaceClass extends SurfaceView implements
SurfaceHolder.Callback {
Bitmap mBitmap;
Paint paint =new Paint();
public SurafaceClass(Context context) {
super(context);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(mBitmap, 0, 0, paint);
}
}
crear un nuevo objeto Paint en onDraw es malo para el rendimiento –
está bien .. he actualizado la respuesta – user1140237
no estoy seguro de que usted tiene que cargar la imagen de mapa de bits como por ejemplo el código (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/widget/ProgressBar.java#ProgressBar.onDraw%28android.graphics.Canvas%29) utiliza Drawable.draw(Canvas c)
.
La buena manera de dibujar un Disponibles en una tela no decodifica por sí mismo, sino dejando que el sistema para hacerlo:
Drawable d = getResources().getDrawable(R.drawable.foobar);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
Esto funciona con todo tipo de dibujables, no sólo los mapas de bits. Y también significa que puede reutilizar ese mismo dibujo nuevamente si solo cambia el tamaño.
¿Cómo se usa una lista de animación (varios fotogramas) para la animación con el enfoque de lienzo? – RichieHH
¡Muy útil! ¡Al menos cuando solo necesitas una imagen de fondo sin ciencia espacial involucrada! – Asim
@RichieHH Tengo mi experiencia en un SurfaceView (probablemente un desperdicio) y esa vista de superficie está incrustada en un Framelayout y ese framelayout contiene ImageViews que luego animaré. ¿Tal vez esa sea una opción para ti? – AgentKnopf
también se puede utilizar de esta manera. que va a cambiar su ajuste drawble grande para su lienzo:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable);
yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint);
La clase BitmapFactory no tiene el método "BitmapFactory.decodeResource (Resource, Drawable);" ... – Crisic
@Crisic Supongo que 'yourDrawable' es un número entero. –
Drawable d = ContextCompat.getDrawable(context, R.drawable.***)
d.setBounds(left, top, right, bottom);
d.draw(canvas);
Creo Drawable con gerResource(). GetDrawable (id); – Vikram
getDrawable (id) está en desuso, debe usar la llamada ContextCompat anterior o la llamada getDrawable (id, theme). https://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int) – wblaschko
Para mí, era necesario usar 'setBounds'. Sin eso, no se mostró nada. –
- 1. dibujar objeto/imagen en lienzo
- 2. Abrir imagen local en lienzo
- 3. Android: Cómo hacer un selector extraíble
- 4. Guardar un lienzo WPF como una imagen
- 5. Imagen local en lienzo en cromo
- 6. android - agregando una cadena sobre una imagen extraíble?
- 7. Rotación de imagen en un lienzo en Android
- 8. CoreGraphics dibujar una imagen en un lienzo en blanco
- 9. Imagen de dibujo en Lienzo en un ángulo SIN rotar el lienzo
- 10. Cortar una imagen circular en lienzo
- 11. Imagen sobre lienzo en archivo JPEG
- 12. Imagen en lienzo con eventos táctiles
- 13. ¿Cómo recuperar una imagen remota para mostrarla en un lienzo?
- 14. Cargue un lienzo html5 en una imagen PIL con Django
- 15. cómo dibujar una imagen en un lienzo con transparencia/alfa
- 16. html5, agregando un eventlistener a una imagen dibujada en lienzo
- 17. Opacidad sobre un fondo Imagen extraíble en Vista (usando diseño XML)
- 18. lienzo html5 usa la imagen como máscara
- 19. cómo guardar el lienzo como imagen png?
- 20. Guardar una imagen desde un lienzo del navegador
- 21. html5: copiar un lienzo de la imagen y volver
- 22. Cómo establecer la imagen de fondo de un lienzo html 5 en la imagen .png
- 23. ¿Es posible crear un lienzo HTML5 con imagen/imagen en polígono?
- 24. Zoom y panorámica de un lienzo de imagen
- 25. moviendo una imagen a través de un lienzo html
- 26. HTML5 girando una imagen con lienzo
- 27. Guardar muchos elementos de lienzo como imagen
- 28. Android: dibujar un lienzo en un ImageView
- 29. Cambiar mapa de bits extraíble en LayerListDrawable
- 30. ¿Puedo usar varias formas en un dibujo extraíble de Android?
Pero si uso canvas.drawBitmap (mBitmap, 0, 0, mBitmapPaint); funciona y carga la imagen guardada en el lienzo, pero al mismo tiempo, deshacer y rehacer dejar de funcionar, verificar mi código http://pastebin.com/cP9w6stm – AndroidDev