Imagen y Gráficos

En Android la pantalla está ocupada por una actividad que cuenta con una vista que contiene un lienzo. Usted tiene la oportunidad de aprovechar el lienzo sobrescribiendo el método View.onDraw() . El único parámetro para onDraw() es un lienzo en el que se pueda dibujar.
Esta es una forma de mostrar una imagen y dibujar gráficos en la pantalla.
public class Graphics extends Activity {
/** LLama a la actividad una vez creada. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GraphicsView(this));
}
public class GraphicsView extends View {
private Paint paint;
private Bitmap mBitmap;
public GraphicsView(Context context) {
super(context);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
}
@Override
protected void onDraw(Canvas canvas) {
paint = new Paint();
paint.setColor(Color.GREEN);
int x = (getWidth() / 2) - (mBitmap.getWidth() / 2);
int y = (getHeight() / 2) - (mBitmap.getHeight() / 2);
canvas.drawLine(40, getHeight() / 2, getWidth() - 40, getHeight() / 2,
paint);
paint.setColor(Color.LTGRAY);
canvas.drawCircle(getWidth() / 2, getHeight() / 2, 40, paint);
canvas.drawBitmap(mBitmap, x, y, null);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.BLUE);
canvas.drawCircle(getWidth() / 2, getHeight() / 2, 100, paint);
Rect rect1 = new Rect(40, 40, 100, getHeight() / 2 - 20);
Rect rect2 = new Rect(getWidth() - 40 - 60, getHeight() / 2 + 20,
getWidth() - 40, getHeight() - 40);
paint.setColor(Color.MAGENTA);
canvas.drawRect(rect1, paint);
canvas.drawRect(rect2, paint);
}
En la Activity Graphics, setContentView() toma como parámetro un objeto de la clase GraphicsView.
setContentView(new GraphicsView(this));
En la clase GraphicView sobrescribimos el método onDraw() con un Cambas como argumento.
@Override
protected void onDraw(Canvas canvas) { }
Un Cambas es un lienzo que nos permite dibujar figuras o una imagen.
Para dibujar el Cambas toma generalmente como parámetros las coordenadas x, y más un objeto de la clase Paint. La clase Paint mantiene el estilo, color y otra información necesaria para dibujar gráficos como mapa de bits (bitmap), texto y figuras geométricas.
A modo de prueba en vez de usar para las coordenadas x, y valores enteros le paso valores fraccionarios del ancho y el alto para mantener la composición dentro de la pantalla tanto en la posición vertical como horizontal.
Se crea un objeto de la clase Paint para pasarle al Canvas.
private Paint paint;
paint = new Paint();
paint.setColor(Color.GREEN);
Para dibujar una línea se toma los valores de las coordenadas del punto inicial y del punto final de la recta más un objeto Paint.
canvas.drawLine(40, getHeight() / 2, getWidth() - 40, getHeight() / 2,
paint);
Para dibujar un circulo los valores de las coordenadas x, y representan el centro, después el valor del radio y un objeto Paint, por defecto el circulo se dibuja relleno.
paint.setColor(Color.LTGRAY);
canvas.drawCircle(getWidth() / 2, getHeight() / 2, 40, paint);
Para mostrar una imagen primero se crea un campo del tipo Bitmap, se inicializa en el constructor de la clase y luego se dibuja con el Canvas.
private Bitmap mBitmap;
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
canvas.drawBitmap(mBitmap, x, y, null);
Con esto cambio el estilo del objeto Paint para que la figura no sea rellena.
paint.setStyle(Paint.Style.STROKE);
Con setColor() se establece el color del objeto Paint.
paint.setColor(Color.BLUE);
Para dibujar un rectángulo primero se crea un objeto Rect para usarlo en el Canvas.
Los valores x, y son la esquina superior derecha y el otros par de valores x’, y’ son la esquina inferior izquierda.
Rect rect1 = new Rect(40, 40, 100, getHeight() / 2 – 20);
Después se llama a canvas.drawRect() con los objetos Rect y Paint como argumento.
canvas.drawRect(rect1, paint);


Aún no hay trackbacks