Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Android / Dibujando con Canvas

Dibujando con Canvas

Autor jc mouse jueves, abril 13, 2017

La clase Canvas (Lienzo)  de Android es una superficie que nos permite pintar figuras, texto e imágenes utilizando para ello la clase Paint, esta clase nos permite definir parámetros como el color, estilo o grosor del trazado de un gráfico vectorial. Su uso es sencillo, primero hay que definir una clase que extienda de View la cual puede estar contenida dentro de la misma Activity (o fuera de ella); Y a continuación sobreescribir el método onDraw (Similar a lo que hacíamos en java desktop al sobreescribir paintComponent), dentro de onDraw, vamos describiendo las primitivas que queremos pintar con Paint y las vamos añadiendo al lienzo (Canvas) para pintarlas.

A continuación mostramos un ejemplo de lo explicado más arriba. Creamos un proyecto en Android Studio con la clase por defecto MainActivity y reemplazamos el código por el siguiente:

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.graphics.Path;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);

        MyCanvasView myCanvasView = new MyCanvasView(this);
        setContentView(myCanvasView);
    }

    private class MyCanvasView extends View {

        /**
         * Constructor de clase
         * */
        public MyCanvasView(Context context) {
            super(context);
        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            Paint paint = new Paint();
            paint.setColor(Color.WHITE);//color blanco
            canvas.drawPaint(paint);//pinta fondo

            //Texto
            paint.setColor(Color.RED);
            paint.setTextSize(42);//tamaño de texto
                            //texto , X, Y, Paint
            canvas.drawText("Hola Mundo Cruel!!!", 10, 56, paint);//pinta texto

            //linea
            paint.setAntiAlias(true);//para evitar efecto sierra
            paint.setStyle(Paint.Style.STROKE);//estilo
            paint.setStrokeWidth(10);//grosor de linea
            paint.setColor(Color.BLUE);
                            //x1 , y1, x2, y2
            canvas.drawLine(0, 100, canvas.getWidth(), 100, paint);

            // rectangulo
            paint.setAntiAlias(true);
            paint.setColor(Color.RED);
            paint.setStyle(Paint.Style.FILL);//relleno
                            // x, y, ancho , alto
            canvas.drawRect(40, 140, canvas.getWidth() - 40, 280, paint);

            // Circulo
            paint.setAntiAlias(true);
            paint.setColor(Color.GREEN);
            paint.setStyle(Paint.Style.STROKE);//borde
            paint.setStrokeWidth(3.6f);
                             // centro X, centro Y, radio
            canvas.drawCircle(canvas.getWidth() / 2 , 400, 100, paint);

            //poligono
            Path path = new Path();
            paint.setColor(Color.MAGENTA);
            paint.setStyle(Paint.Style.FILL);
            path.moveTo(canvas.getWidth() / 2, 550);
            path.lineTo(canvas.getWidth() / 2 + 100, 700);
            path.lineTo(canvas.getWidth() / 2 - 100, 700);
            path.close();
            canvas.drawPath(path, paint);

            //imagen
            Bitmap bmp = BitmapFactory.decodeResource(getResources(),
                    R.mipmap.ic_launcher );//Icono de android
                              //imagen, X, Y
            canvas.drawBitmap(bmp,canvas.getWidth() / 2,760,paint);

        }
    }

}//end  Main

ejecutamos y podemos ver a continuación el resultado

canvas android bolivia

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Crea una ventana de dialogo “Acerca de…” personalizado

Crea una ventana de dialogo “Acerca de…” personalizado

Cuando se crean aplicaciones android o cualquier otro tipo de software, es importante dejar información del o los desarr...

Imprimir imagen con Print

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, e...

Blog MVC – El theme y primer controlador [p3]

Blog MVC – El theme y primer controlador [p3]

Tercera parte del tutorial [Crea tu blog con el patrón MVC y php] En este post trabajaremos en el Theme del blog, agrega...

JavaFX y ApiRest – GET

JavaFX y ApiRest – GET

En este tutorial construiremos una aplicación en JavaFX para leer datos de un servicio web Herramientas IDE Netbeans 8.x...

Conexión RESTFUL con android y JSON

Conexión RESTFUL con android y JSON

En este tutorial crearemos una sencilla aplicación android que nos permitirá conectarnos a un RESTFUL, obtener un result...

WhatsApp: Aprende a usar la nueva función ‘Estado’

WhatsApp: Aprende a usar la nueva función ‘Estado’

A continuación te mostramos una guía sobre la nueva nueva función ‘estado‘ de WhatsApp.  Primero que nada, a...

Comparte lo que sabes

Categorias

Últimas entradas

Sans Forgetica es una fuente diseñada utilizando los principios de la psicología cognitiva para ayudar a recordar mejor...

Facebook la compañía de Mark Zuckerberg confirmó hace unas semanas que la Red Social había sido hackeado debido a una br...

Google+ o Google plus como también se le conoce a la red social del gigante de la informática Google cerrará para siempr...

Como dice un viejo dicho, “La practica hace al maestro” y en el mundo de la programación no es diferente, po...

Android Bolivia

MAUS