Sesiones PDC 2008

Bueno, para todos aquellos que aún no lo cachan, hace aproximadamente un mes, se llevó a cabo el PDC 2008 (Professional Developer Conference), en la cual se mostraron hacia donde va la tecnología Microsoft. Lamentablemente, no pude asistir al evento, si estás en la misma situación, y quieres ver qué cosas nuevas se mostraron, aquí te traigo las sesiones, diapositivas y uno que otro archivo .zip para que veas, sesión por sesión, las novedades para los próximos años 🙂

https://sessions.microsoftpdc.com/public/timeline.aspx

que lo disfrutéis tanto como yo 🙂

Salu2

Héctor Pérez

Abriendo archivos desde WPF

Hola qué tal?, bueno pues en las dudas y comentarios, ha surgido una pregunta, la cual parafraseo:

"…estoy haciendo una aplicación en wpf, el problema es que necesito insertar una imagen, ojo, ésta es una imagen cualquier, lo que necesito es insertar imagenes que originalmente no estén en el proyecto… "

Ahora bien, cómo insertamos una imagen, o mas bien, la pregunta sería,¿ cómo obtengo acceso a un archivo en mi computadora?

Para efectos de esta demo, he creado un archivo WPF, con 2 elementos, un control del tipo Image, y un control del tipo Button:

image

Ahora bien, una cosa importante es ponerle nombre a ambos elementos, en este caso, al control image le he puesto por nombre imagen, y al boton btn_imagen.

Lo siguiente es declarar el evento para nuestro botón (lo pudes hacer dando doble click sobre el botón).

private void Button_Click(object sender, RoutedEventArgs e)

{

}

Ahora bien, tanto en winforms como en WPF, está disponible para nosotros la clase OpenFileDialog, el cual, nos permitirá abrir un cuadro de diálogo desde el cual podremos seleccionar uno o mas archivos a ser abiertos, entonces no queda mas que declarar una nueva instancia de dicha clase:

OpenFileDialog openFileDialog1 = new OpenFileDialog();

Bien, ahora, tenemos que especificar un filtro para los archivos que buscaremos, ya sean con extensión .txt, .docx, etc etc etc, esto lo hacemos con la propiedad Filter:

openFileDialog1.Filter = "Archivos de imágen (.jpg)|*.jpg|All Files (*.*)|*.*";

Como puedes darte cuenta, en este caso hemos especificado que cuando abra el cuadro de diálogo, aparezcan como selección los archivos con extensión .jpg, y por otro lado, todos los archivos.

Lo siguiente es declarar la propiedad de Index a 1, esto es para obtener el Index del filtro que anteriormente especificamos, dentro de nuestro cuadro de diálogo:

openFileDialog1.FilterIndex = 1;

Permitiremos que varios archivos puedan ser selccionados a la vez, o sólo uno? En este caso le diremos que podrán ser varios, con la propiedad Multiselect:

openFileDialog1.Multiselect = true;

Ahora, falta checar si hemos presionado el botón de OK o el de cancel, esto se puede hacer fácilmente con una declaración de un booleano, al cual se le asigne la respuesta del file dialog:

bool? checarOK = openFileDialog1.ShowDialog();

Ok, en dado caso de que haya el usuario clickeado en OK, debemos especificar qué pasará, para esto usaremos la propiedad “FileName”, la cual, obtiene la ruta del archivo que hayamos selccionado, la cual es una cadena; un breakpoint aquí, y es que, si checamos en las dependency propierties de WPF, veremos que Image tiene una llamada source, a la cual normalmente le asignamos la ruta de los archivos que tenemos(p.e. \images\imagen.jpg), por lo que fácilmente podríamos irnos con la finta de que quedaría algo así:

imagen.source = openFileDialog1.FileName.ToString;

pues eso es totalmente erróneo, lo que debemos hacer, es crear un nuevo BitmapImage, con la ruta que nos haya arrojado precisamente FileName de nuestro cuadro de diálogo, y posteriormente asignarselo al control Image:

imagen.Source = new BitmapImage(new Uri(openFileDialog1.FileName));

Ahora,  a probar nuestra aplicación:

La ventana principal:

image

La ventana después de haber presionado el botón:

image

La ventana después de haber seleccionado una imágen:

image

Entonces, el código final queda:

private void Button_Click(object sender, RoutedEventArgs e)
{
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.Filter = "Archivos de imágen (.jpg)|*.jpg|All Files (*.*)|*.*";
    openFileDialog1.FilterIndex = 1;
    openFileDialog1.Multiselect = true;
    bool? checarOK = openFileDialog1.ShowDialog();
    if (checarOK==true)
    {              
        //imagen.source = openFileDialog1.FileName.ToString;
         //(System.Windows.Media.ImageSource)
        imagen.Source = new BitmapImage(new Uri(openFileDialog1.FileName));
    }
}

Y aquí está el enlace para descargar la demo:

AbrirImagen.zip

Salu2 y éxito 😉

Héctor Pérez

De regreso al bloggeo

Hola qué tal a todos! Creo que ya algunos me extrañaban por aquí jeje, antes que nada, quiero agradecer a toda la gente que me ha dado ánimos a través de los comentarios, se agradece a todos y cada uno.

No había tenido internet en este último mes, por lo que se me hizo imposible postear. Créanme que es desesperante el  no poder estar actualizado, y justamente cuando salían las primeras sesiones del PDC 2008, pero bueno, por algo pasan las cosas, créanme que es muy diferente la visión cuando uno está del otro lado, o sea cuando no tiene contacto con la web constantemente.

En fin, aquí estamos de regreso para seguir bloggeando, tengo pensado escribir algunos post interesantes, estén al pendiente. Gracias de nuevo y cualquier cosa aquí estamos gracias a Dios 🙂

Héctor Pérez