Visitas

viernes, 17 de febrero de 2012

Almacenamiento Aislado - WPhone - Parte 2

Para mayor comprensión de esta post, favor revisar la primera parte del mismo:

Almacenamiento Aislado - WPhone - Parte 1


El tema que se va a tratar, es: "Almacenamiento Aislado en Archivos", vamos a explicando este tema, junto con el desarrollo de un pequeño ejemplo, el cual sera adjunto al final de esta publicación.


La aplicación que vamos a desarrollar permite copiar la imagen que se dentro de la celda "Origen" y grabarla en un archio "jpg", el cual esta ubicado dentr de un directorio de nombre "Imagenes".

Comenzaremos con la explicación del método "Grabar".

Método Grabar:

private void Grabar_archivo(BitmapImage imagen)
{
using (IsolatedStorageFile almacen = IsolatedStorageFile.GetUserStoreForApplication())
{
WriteableBitmap bmimagen = new WriteableBitmap(imagen);
if(!almacen.DirectoryExists("Imagenes"))
{
almacen.CreateDirectory("Imagenes");
}

using (IsolatedStorageFileStream isoStream = almacen.OpenFile(@"Imagenes\Imagen_copiada.jpg",FileMode.OpenOrCreate))
{
Extensions.SaveJpeg(bmimagen,isoStream,bmimagen.PixelWidth,bmimagen.PixelHeight,0,100);
}
}

Noten que estamos utilizando "using", ya que estos métodos que estamos utilizando requieren ser cerrados, al trabajarlos como namespaces, nos obviamos la necesidad de cerrar los Stream abiertos.
1.- Crearemos un objeto del tipo "IsolatedStorageFile" (almacenamiento aislado en archivos).
2.- Crearemos un directorio con el método "CreateDirectory", eso se hace previa a validación, el directorio solo se creara en caso de no existir.
Una vez hecho ya el directorio, comenzaremos con el manejo de datos en general:
3.-Crearemos un objeto del tipo "IsolatedStorageFileStream", una vez hecho esto, crearemos el archivo y lo grabaremos con la extensión "jpg".

Notece que este método recibe como parametro un objeto del tipo "BitmapImage".

Ahora faltaría programar el botón que llamara a este método y le enviara el parametro deseado.

private void btn_grabar_Click(object sender, System.Windows.RoutedEventArgs e)
{

BitmapImage bm = new BitmapImage();
bm=(BitmapImage)(cisc_cell_net.Source);

Grabar_archivo(bm);
MessageBox.Show("Imagen Grabada con exito");
}

1.- Crearemos un objeto del tipo "BitmapImage", que es lo que recibe nuestro método grabar como parametro.
Nos topamos aquí con una cuestión el elemento que se ve en pantalla es un objeto del tipo Image, que tiene como propiedad Source, una imagen del tipo "png", el image, no es más que un elemento contenedor para una imagen; nuestro método "Grabar", solo recibe un objeto del tipo: "BitmapImage", para resolver esto haremos lo siguiente.
2.- Llamaremos al elemento image antes mencionado, haciendo referencia a su propiedad Source (es la fuente de datos del elemento Image), luego haremos un Cast, para hacerlo pasar como un BitmapImage.
3.- Llamaremos el método grabar y asignaremos el paremetro.

Con esto estaría completo nuestro procedimiento de Grábado.


Método Leer & Mostrar:

private BitmapImage obtener_archivo()
{
BitmapImage imagen = new BitmapImage();
using(IsolatedStorageFile almacen= IsolatedStorageFile.GetUserStoreForApplication())
{
using(IsolatedStorageFileStream isoStream = almacen.OpenFile(@"Imagenes\Imagen_copiada.jpg",FileMode.Open))
{
imagen.SetSource(isoStream);
}
}
return imagen;
}

1.- Crearemos un objeto del tipo: "BitmapImage", que sera el que contendra la imagen que queremos mostrar.
2.- Crearemos un objeto del tipo: "IsolatedStorageFile" asi mismo dentro de un using, para obviarnos el hecho de cerrar el Stream que abrirmos más abajo.
3.- Por ultimo crearemos un objeto del tipo: "IsolatedStorageFileStream", para tener acceso a la ruta donde esta el archivo antes guardado.
4.- Setearemos la fuente de datos del elemento tipo "BitmapImage" con los datos que antes accedimos.
5.- Retornaremos el elemento tipo "BitmapImage".

Nos faltaría entonces la programación del botón, que llamara a este método y seteara el Source del elemento tipo Image (se llama resultado) dispuesto en la pantalla, con el "BitmapImage" que acabamos de leer.

A continuación el código del bóton:

private void btn_mostrar_Click(object sender, System.Windows.RoutedEventArgs e)
{
BitmapImage bm = new BitmapImage();
bm=obtener_archivo();
resultado.Source=bm;
}


1.- Crearemos un objeto del tipo "BitmapImage" (este tipo de objeto nos retorna la función anterior.
2.- Le asignaremos como contexto de datos, el BitmapImage que nos retorna la función anterior.
3.- Para terminar definiremos el Source(fuente) del elemento tipo Image que esta dispuesto en nuestro Page.

Y Listo!!!
El trabajo esta hecho.

Les muestro a continuación Capturas de la aplicacion:

Daremos click en grabar:



Daremos click en mostar:


Para descargar el ejemplo anterior
de click Aquí:

Nombre del archivo: "Almacenamiento Aislado - Archivos.rar"
Clave: "LANATAE"

Enlace

1 comentario: