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