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

native2ascii: Convertir caracteres Non-Unicode a Unicode

native2ascii: Convertir caracteres Non-Unicode a Unicode

El JDK (Java Development Kit) tra una herramienta llamada native2ascii la cual permite convertir un fichero de una codif...

Matriz de Adyacencia: Representación de grafos en Java

Matriz de Adyacencia: Representación de grafos en Java

En este post conoceremos una forma de representar grafos mediante una Matriz de Adyacencia y un ejemplo básico de este e...

Software Libre: Decompilador Java

Software Libre: Decompilador Java

El proyecto “Java Decompiler” tiene como objetivo desarrollar herramientas para descompilar y analizar byte...

Autenticación en php con MySql y POO

Autenticación en php con MySql y POO

Autenticación en una pagina web es el proceso de confirmar que un usuario es quien dice ser, asi de simple. En el siguie...

Ejemplo de Pruebas Unitarias en Java

Ejemplo de Pruebas Unitarias en Java

Una Prueba Unitaria, es una forma de comprobar que nuestro código, hace lo que se supone debe hacer; es decir, se asegur...

Crear componentes en tiempo de ejecución con Netbeans

Crear componentes en tiempo de ejecución con Netbeans

🙂 Una de las preguntas más buscadas por programadores java es la de crear componentes swing en tiempo de ejecución, eso...

Comparte lo que sabes

Categorias

Últimas entradas

¿Que es el Ciberbullying? Ciberbullying es la unión de dos palabras en inglés cyber + bullying, en español lo conocemos...

Tradukisto es una biblioteca para Java 8 creada para convertir números enteros o cantidades de dinero a sus equivalentes...

Las aplicaciones con IA (Inteligencia Artificial) son cada vez más comunes y se encuentran en diferentes dispositivos de...

Tink es una biblioteca de cifrado desarrollada por un grupo de criptógrafos e ingenieros de seguridad de Google lanzado...

Android Bolivia

MAUS