lunes, 11 de noviembre de 2013

Dibujando en el Paint.

Una vez verificado que el usuario exista entonces por default siempre va a existir en lienzo en blanco en el cuál los clientes podrán comenzar a disfrutar y dibujar en nuestro programa.

Una cosa muy importante aquí es que por debajo mientra el cliente dibuja con diferentes colores, grosores, con o sin relleno, los puntos iniciales y finales de cada figura, el tipo de figura ya que puede ser un círculo un cuadrado o una línea, cuantas figuras existes. Toda esta información se la va almacenando en bytes, para luego ser enviadas en formato binario y serializado a la base de datos. Para que al momento de acceder al lienzo con esta información sea capaz de reconstruir nuestro lienzo y mostrarnos tal y cual como lo guardamos.

Este es una parte fundamental de nuestro proyecto ya que en estos dos métodos que presentamos a continuación son el de Serializar los datos binarios el De-Serializar.

   public byte[] Serializar(List<Figura> objSerializable)
        {
            // Vamos a controlar el tiempo de vida de los objetos mediante el uso de Using y creamos una memoria de flujos
            // que me permitirá almacenar de forma binaria la inforamción de las figuras
            using (MemoryStream stream = new MemoryStream())
            {
                // Creo el formato binario para enviar de esta forma a la base de datos y poder enviar como bytes
                BinaryFormatter binario = new BinaryFormatter();
                // Serializo los datos que voy a enviar en este caso el arreglo de figuras
                binario.Serialize(stream, objSerializable);
                // Me retorna el flujo y lo convierto a un arreglo de bytes
                return stream.ToArray();
            }
        }

        // Método que me permitirá deserializar lso objetos que hemos enviado para poder regenerar la imagen(Lienzo) y poder de nuevo
        // obtener
        public object Deserializar(byte[] objDeserializable)
        {
            // Vamos a controlar el tiempo de vida de los objetos mediante el uso de Using y creamos una memoria de flujos
            // que me permitirá almacenar de forma binaria la inforamción de las figuras
            using (MemoryStream stream = new MemoryStream(objDeserializable))
            {
                // Creo el formato binario para enviar de esta forma a la base de datos y poder enviar como bytes
                BinaryFormatter binario = new BinaryFormatter();
                // Comienzo a leer desde la posicion 0 elflujo
                stream.Position = 0;
                // Me retorna todo los datos serializados
                return binario.Deserialize(stream);
            }
        }

En el siguiente gráfico se ve como un cliente ha dibujado distintas figuras de distintos colores y tamaños con o sin relleno, como se mencionó antes toda esta información se va almacenando para luego ser transmitida.



En este gráfico podemos observar ya cuando el lienzo haya sido enviado a guardar en la base de datos, como podemos observar nosotros lo guardamos como binario pero lo transformamos a Hexadecimal ya que en este formato al momento de recuperar solo quitamos los "-" y podemos recuperar el lienzo. 





No hay comentarios:

Publicar un comentario