Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema al Abrir Imagen sin usar su full path C#

Estas en el tema de Problema al Abrir Imagen sin usar su full path C# en el foro de .NET en Foros del Web. Gracias de ante mano... El detalle es el siguiente, cuando entro a un formulario de consulta, uso un listbox, donde cargo solo los nombres de ...
  #1 (permalink)  
Antiguo 01/10/2009, 12:44
 
Fecha de Ingreso: noviembre-2008
Mensajes: 18
Antigüedad: 15 años, 6 meses
Puntos: 0
Problema al Abrir Imagen sin usar su full path C#

Gracias de ante mano...

El detalle es el siguiente, cuando entro a un formulario de consulta, uso un listbox, donde cargo solo los nombres de personas que tengo en una BD, usando un evento listbox_changeindex, logro hacer que al pulsar sobre cualquier nombre, en la parte de abajo del formulario, me aparezcan los datos completos de las personas en labels, y la imagen de la persona en un Picturebox...

Ahora, si alguna persona no coloco una imagen en el form de altas por ende la ruta guardada en la BD es "" (Nada).

Ahora, yo uso una imagen default en el picturebox cuando se carga el form vacio, esa imagen esta dentro del proyecto en la carpeta \Resources, como hago para abrir esa imagen sin poner el full path, ya que ese proyecto lo quiero empaquetar...logicamente si queda con el full_path siempre va a marcar error de no encontrar el archivo....

No se si me explique pero a lo que me refiero es a abrir la imagen con algo asi como

picturebox1.Image = Image.FromFile("\\Resources\\camera.png");
(Logicamente que esto ya lo intente y me marca que no encuentra el archivo)

De antemano Gracias....
  #2 (permalink)  
Antiguo 01/10/2009, 15:35
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema al Abrir Imagen sin usar su full path C#

¿lo estás ejecutando desde el Visual studio?, cuando ejecutas desde él aveces el directorio de trabajo es otro que no es el del proyecto y por eso no cuadran las rutas
  #3 (permalink)  
Antiguo 02/10/2009, 14:39
 
Fecha de Ingreso: noviembre-2008
Mensajes: 18
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema al Abrir Imagen sin usar su full path C#

Bueno de hecho si lo estoy ejecutando desde Visual Studio, pero pos el problema no creo que sea la ruta o no se...
Pero mira te voy a mostrar un poquito del codigo que tengo, para que cheques que es lo que deseo hacer

Código:
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string persona;
            foreach (string[] a in familia)
            {
                persona = a[0] + " " + a[1] + " " + a[2];
                if (listBox1.SelectedIndex == -1)
                {}
                else if (persona == listBox1.SelectedItem.ToString())
                {
                    label_ap.Text = a[0];
                    label_am.Text = a[1];
                    label_nombre.Text = a[2];
                    label_ocupacion.Text = a[3];
                    label_trabajo.Text = a[4];
                    label_tel1.Text = a[5];
                    label_tel2.Text = a[6];
                    label_correo.Text = a[7];
                    label_parentesco.Text = a[8];
                    if (a[9] != "")
                    {
                        pictureBox3.SizeMode = PictureBoxSizeMode.StretchImage;
                        pictureBox3.Image = Image.FromFile(a[9]);
                    }
                    else
                    {
                        pictureBox3.SizeMode = PictureBoxSizeMode.CenterImage;
                        pictureBox3.Image = Image.FromFile(@"C:\Users\miusuario\Documents\Visual Studio 2008\Projects\control_estancia\control_estancia\Resources\camera-photo.png");
                    }
                }
            }
Si checas el codigo, lo unico que hago es que al seleccionar un nombre de la lista, me aparecen los datos completos en unos labels que tengo en el form, pero aparte me carga la foto en el picturebox, lo unico que no quiero es poner el fullpath, para que el programa lo pueda portar a otras compu...ia sabes...

ahora otra consulta sobre lo mismo...Cuando io cargo el formulario, ninguna persona de la lista esta seleccionada, entonces, el picturebox se carga con una imagen que seleccione desde las propiedades...

habra una forma de regresar el picturebox a su estado inicial??? podria ser otra opcion, si pongo el Dispose(), me sale una tacha roja enorme...ese no me sirve..

Gracias de antemano
  #4 (permalink)  
Antiguo 02/10/2009, 20:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema al Abrir Imagen sin usar su full path C#

Cita:
lo unico que no quiero es poner el fullpath, para que el programa lo pueda portar a otras compu...ia sabes...
Lo más simple es crear una carpeta para imágenes en la carpeta de la aplicación y luego usar la propiedad Application.StartupPath() para obtener la primera parte de la ruta y encadenarla con el resto.
Cita:
habra una forma de regresar el picturebox a su estado inicial???
Y, si. Indícale nuevamente el archivo imagen, o bien redirecciona su fuente de la propiedad Image de nuevo a su origen.
Si no te acuerdas cuál es, entonces antes de cambiarla guarda esa propiedad en una variable para poder recargarla.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 02/10/2009, 21:05
 
Fecha de Ingreso: noviembre-2008
Mensajes: 18
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema al Abrir Imagen sin usar su full path C#

Gracias por responder...y de paso dicho que ia logre solucionar lo del path...

Intente con lo que me decias gnzsoloyo lo del Application.StartupPath(), pero pos eso, me mandaba la ruta del ejecutable(.exe), y en el proyecto eso esta en la carpeta bin...

de hecho si tengo una carpeta donde guard las imagenes, pero por ahi picando, logre regresarla a su estado inicial...

creo que fue mas facil de lo que me parecia, pero ia sabes como es esta onda, despues de tanto rato tras la pc, despues las cosas mas sencillas, se hacen mas dificiles...jejeje

Gracias por cierto al foro, por atender lo mas que se puede...igual vere si me conecto mas seguido al foro, aer que puedo aportar....

P.D. Ia pueden cerrar el tema...
  #6 (permalink)  
Antiguo 03/10/2009, 08:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema al Abrir Imagen sin usar su full path C#

Cita:
y en el proyecto eso esta en la carpeta bin...
Si, es cierto, en el proyecto está en la carpeta /bin, pero no lo estará en la carpeta de la aplicación luego de instalada. En ese caso irá en ..Archivos de programa/nombre del programa/imagen.
No debes pensar en la estructura que tiene el proyecto, sino en donde quedará cuando esa aplicación sea instalada por un usuario. Por eso es recomendable pensar en el árbol de carpetas que usará la aplicación finalmente. No en la que usa en el proyecto...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 03/10/2009, 18:33
 
Fecha de Ingreso: noviembre-2008
Mensajes: 18
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Problema al Abrir Imagen sin usar su full path C#

Ah ok...ke bueno el dato, osea que lo que esta en la carpeta \bin, biene siendo la carpeta principal del programa, o algo asi??, por lo que mensionas, entonces tendre que cambiar la ruta de los archivos a \bin

eso no lo sabia...de todos modos te agradeceria, si tienes alguna info en la ke me pueda basar para chekar lo del arbol del proyecto, te lo agradeceria mil....

Gracias...
  #8 (permalink)  
Antiguo 05/10/2009, 02:00
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: Problema al Abrir Imagen sin usar su full path C#

Hola!

si agregas la imagen a los resources del proyecto no necesitas nada de rutas, ni siquiera necesitarás la foto ya que ésta va "dentro" del exe.

Simplemente tendrás que llamarla de la siguiente manera:

Código:
PictureBox1.Image = New System.Drawing.Bitmap(MiAplicacion.My.Resources.Imagen1)
Saludos!
  #9 (permalink)  
Antiguo 05/10/2009, 07:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema al Abrir Imagen sin usar su full path C#

Cita:
si agregas la imagen a los resources del proyecto no necesitas nada de rutas, ni siquiera necesitarás la foto ya que ésta va "dentro" del exe.
Es una muy buena idea para conservar las imágenes base y los íconos, por ejemplo, a pesar de que aumentará el tamaño de la aplicación (como todo objeto que se incrusta), pero no resuelve el problema de las imágenes que los usuarios agreguen.

El tema del manejo de archivos y carpetas de un proyecto, para su uso final, lo debes resolver cuando construyes el proyecto de instalador (ver El Guille). Allí se crea en forma automática una carpeta cuyo nombre tu debes definir, y que es la que se pondrá en Archivos de Programa/tuPrograma, en el disco. El único secreto de esto es que a esa carpeta le agregas otra (por ejemplo /Imagenes) y luego dentro de esa carpeta le agregas todos los archivos de imagen que por default el programa deba llevar en ese sitio.
Cuando la aplicación se instale, creará la carpeta en su ubicación final y copiara los archivos indicados en ella.
También en esta etapa es cuando indicas si el acceso a la aplicación pondrá un ícono en el Escritorio, en la barra de inicio rápido y/o en Inicio/Programas.
Mira el tutorial de El Guille y luego me cuentas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:27.