none
Insertar y mostrar una IMAGEN en varias posiciones en un formulario con C# RRS feed

  • Pregunta

  • Quiero insertar una IMAGEN varias veces a sql server y despues mostrarla en un formulario  ¿Se puede guardar una sola vez la imagen porque es la misma o como le pudiera hacer para mostarlas?

    estoy utilizando

    // cargar la imagen correspondiente
                    img[i] = System.Drawing.Image.FromFile

    para cargar la imagen.

     // establecer el alto y ancho del rectangulo en donde se dibujara la imagen              
                    imgs[i].Height = img[i].Height;
                    imgs[i].Width = img[i].Width;

    lunes, 27 de noviembre de 2017 16:15

Todas las respuestas

  • Buenas

    Realmente, deberías guardar la imagen 1 vez, y deberías leerla 1 vez también, luego cuantas veces la uses ya da igual.

    El código que has mostrado no nos indica mucho tampoco... Intenta explicar mejor que quieres que haga tu programa, apóyate con el código entero de la parte que no responde como esperas, y te ofreceremos la mejor ayuda posible

    Quedo a la espera de tu respuesta

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    lunes, 27 de noviembre de 2017 16:18
  • Muchas gracias ING Jorge

    Estoy haciendo un sistema de monitoreo de antenas inalambricas, al momento de colocar una imagen en una posicion sobre un mapa (picturebox) y al arrastrar una imagen y colocalrla en una area especifica y soltar la  mostrara un nuevo formulario (Form) en el cual se agregara un registro sobre el dispositivo. Al momento de hacer el monitoreo quiero que me aparesca la imagen donde la coloque.

    using Sistema_Monitoreo.Properties;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Sistema_Monitoreo
    {
        public partial class Main_Form : Form
        {
            bool m_isMonitoring = false;
            private Rectangle[] imgs = new Rectangle[20];
            private Image[] img = new Image[20];
            private int selectedRect;
            private int numImages = 200;
            private bool btnDown;
            private int offsetX;
            private int offsetY;
    
            public Main_Form()
            {
                InitializeComponent();
                //agregarAntena();
            }
    
            private void Main_Form_Load(object sender, EventArgs e)
            {
                principal();
            }
    
            private void principal()
            {
                detenerToolStripMenuItem.Visible = false;// OCULTA EL CONTROL DE LA VISTA PRINCIPAL
                groupBox1.Visible = false; // OCULTA EL CONTROL DE LA VISTA PRINCIPAL
                mapaMonitoreo.Visible = false;
                lblTitAntena.Visible = false;
                lblAnt.Visible = false;
                lblTerm.Visible = false;
                lbl_X.Visible = false;
                lbl_Y.Visible = false;
                lblTer.Visible = false;
                coordenadaX.Visible = false;
                coordenadaY.Visible = false;
                //pic1.Visible = true;
                buscarPorDireccionMACToolStripMenuItem.Visible = true;
                this.Size = new System.Drawing.Size(795, 470);//TAMAÑO DE VENTANA PRINCIPAL
            }
    
            private void iniciarToolStripMenuItem_Click_1(object sender, EventArgs e)
            {
                monitorear_antenas();//VARIABLE QUE PERMITE INICIAR MONITOREO
                iniciarToolStripMenuItem.Visible = false;// OCULTA EL CONTROL DE LA VISTA MONITOREO
                detenerToolStripMenuItem.Visible = true;// MUESTRA EL CONTROL DE LA VISTA MONITOREO
                m_isMonitoring = true;
            }
    
            private void monitorear_antenas()//METODO QUE PERMITE HACER EL CAMBIO DE VISTA EN LA MISMA VENTANA PRINCIPAL
            {
                groupBox1.Visible = false;//MUESTRA UN FORMULARIO DE CONTROL DE LADO DERECHO
                mapa.Visible = false;
                lblTer.Visible = false;
                //panel1.Visible = false;
                //Map_Panel.Visible = true;
                buscarPorDireccionIPToolStripMenuItem.Visible = true;
                buscarPorDireccionMACToolStripMenuItem.Visible = true;
                mapaMonitoreo.Visible = true;
                this.Size = new System.Drawing.Size(1278, 690);//TAMAÑO DE VENTANA PRINCIPAL EN MODO MONITOREO
            }
    
            private void detenerToolStripMenuItem_Click(object sender, EventArgs e)
            {
                detener_monitoreo();//VARIABLE DETENER "DETIENE LA EJECUCION DE MONITOREO"
            }
    
            private void detener_monitoreo()//CAMBIO DE VISTA DE LA IMAGEN DE LA VENTANA PRINCIPAL
            {   
                detenerToolStripMenuItem.Visible = false;//PERMITE OCULTAR LA OPCION "DETENER"
                iniciarToolStripMenuItem.Visible = true;//SE MUESTRA LA OPCION "INICIAR"
                groupBox1.Visible = false;//OCULTA EL CONTROL DE LA VISTA PRINCIPAL
                //panel1.Visible = false;
                //Map_Panel.Visible = true;
                mapa.Visible = true;
                mapaMonitoreo.Visible = false;
                buscarPorDireccionIPToolStripMenuItem.Visible = true;
                buscarPorDireccionMACToolStripMenuItem.Visible = true;
                this.Size = new Size(795, 470);//TAMAÑO DE VENTANA PRINCIPAL
                m_isMonitoring = false;
            }
    
            private void buscarPorDireccionMACToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Buscador dlg = new Buscador(true);
                dlg.ShowDialog();
            }
    
            
    
            private void buscarPorDireccionIPToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Buscador dlg = new Buscador(false);
                dlg.ShowDialog();
            }       
    
            private void verTodasToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form1 dlg = new Form1(true);
                dlg.ShowDialog();
            }
    
            private void verTodasToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                Form1 dlg = new Form1(false);
                dlg.ShowDialog();
            }
    
            private void agregarAntenaToolStripMenuItem_Click(object sender, EventArgs e)
            {
                agregarAntena();           
            }
    
            private void agregarAntena()
            {
                this.Size = new Size(1278, 690);
                lblTer.Visible = false;
                mapa.Visible = false;
                lblAnt.Visible = true;
                lblTerm.Visible = false;
                lblTitAntena.Visible = true;
                lbl_X.Visible = true;
                lbl_Y.Visible = true;
                coordenadaX.Visible = true;
                coordenadaY.Visible = true; 
                mapaMonitoreo.Visible = true;
                // inicializar las imagenes e insertarlas dentro de los rectangulos
                for (int i = 0; i < numImages; i++)
                {
                    // cargar la imagen correspondiente
                    img[i] = System.Drawing.Image.FromFile(@"C:\...\local3.png");
                    // establecer el alto y ancho del rectangulo                
                    imgs[i].Height = img[i].Height;
                    imgs[i].Width = img[i].Width;
                }
            }
    
            private void agregarTerminalToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form2 dlg = new Form2(false);
                dlg.ShowDialog();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //Map_Panel.Visible = true;
                //panel1.Visible = false;
                mapa.Visible = true;
                this.Size = new System.Drawing.Size(795, 470);//TAMAÑO DE VENTANA PRINCIPAL
            }
    
            private void mapaMonitoreo_Paint(object sender, PaintEventArgs e)
            {
                Graphics g = e.Graphics;
    
                for (int i = 0; i < numImages; i++)
                {
                    g.DrawImage(img[i], imgs[i]);
                }
            }
    
            private void mapaMonitoreo_MouseDown(object sender, MouseEventArgs e)
            {
                // el boton izquierdo esta pulsado
                if (e.Button == MouseButtons.Left)
                {
                    btnDown = true;
    
                    // en un princio no hay ningun rectangulo seleccionado
                    selectedRect = -1;
    
                    // recorrer todos los rectangulos para ver en cual esta el raton                
                    for (int i = 0; i < numImages; i++)
                    {
                        // comrpobar si el raton esta dentro del rectangulo
                        if (((e.X > imgs[i].X) && (e.X < imgs[i].X + imgs[i].Width)) &&
                            ((e.Y > imgs[i].Y) && (e.Y < imgs[i].Y + imgs[i].Height)))
                        {
                            //TODO: aqui se puede optimizar para buscar si coincide con un pixel que no sea
                            // transparencia, de forma que se compruebe que esta dentro de la imagen y no
                            // de su rectangulo
    
                            // seleccionar el rectangulo con la imagen
                            selectedRect = i;
    
                            // guardar los offsets del rectangulo con el raton
                            offsetX = e.X - imgs[i].X;
                            offsetY = e.Y - imgs[i].Y;
    
                            // se obtiene solo el primero que encuentre
                            break;
                        }
                    }
                }
            }
    
            private void mapaMonitoreo_MouseMove(object sender, MouseEventArgs e)
            {
                if (btnDown)
                {
                    // mover el rectangulo que contiene la imagen con el raton       
                    if (selectedRect >= 0 && selectedRect < numImages)
                    {
                        imgs[selectedRect].X = e.X - offsetX;
                        imgs[selectedRect].Y = e.Y - offsetY;
                        this.Refresh();
                    }
                }
            }
    
            private void mapaMonitoreo_MouseUp(object sender, MouseEventArgs e)
            {
                // el boton izquierdo se libera
                if (e.Button == MouseButtons.Left)
                {
                    btnDown = false;
                    coordenadaX.Text = e.Location.X.ToString();
                    coordenadaY.Text = e.Location.Y.ToString();
                    Form2 dlg = new Form2(true);
                    dlg.ShowDialog();
                }
            }
        }
    }


    lunes, 27 de noviembre de 2017 16:57
  • Buenas,

    En un rato pruebo tu código y te digo algo. De todos modos, desmarca mi respuesta, ya que eso indica que la pregunta está resuelta, y otros compañeros no van a entrar muchas veces por estar resuelta, hay que marcar las respuestas válidas, porque ayuda al foro, pero solo cuando realmente están resueltas, si quieres votar favorablemente por alguien, esta el botón votar justo debajo del icono de la respuesta.

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    lunes, 27 de noviembre de 2017 17:01
  • OK muchas gracias inge espero su apoyo 
    lunes, 27 de noviembre de 2017 17:38
  • Vale,

    Estoy viendo que tienes un array de imagenes, la imagen es la misma? o son varias? en el enunciado he entendido que era la misma. Si esto es correcto, puedes utilizar un solo Bitmap (o Image) para almacenar la imagen, y simplemente la vas referenciando donde te haga falta.

    Por ejemplo, si es la misma, puedes hacer asi:

    private void mapaMonitoreo_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
    
        for (int i = 0; i < numImages; i++)
        {
            g.DrawImage(img, imgs[i]);
        }
    }

    Teniendo en cuenta que la definición de img pasa a ser

    private Image img = System.Drawing.Image.FromFile(@"C:\...\local3.png");

    si te interesa guardar los diferentes rectangulos, que indican las zonas donde la vas a tener que pintar, pero al ser una unica imagen, no necesitas almacenarla 20 veces.

    Al haberla leido ya al crear la variable, puedes cambiar AgregarAntena() para quitarlo

     private void agregarAntena()
            {
                this.Size = new Size(1278, 690);
                lblTer.Visible = false;
                mapa.Visible = false;
                lblAnt.Visible = true;
                lblTerm.Visible = false;
                lblTitAntena.Visible = true;
                lbl_X.Visible = true;
                lbl_Y.Visible = true;
                coordenadaX.Visible = true;
                coordenadaY.Visible = true; 
                mapaMonitoreo.Visible = true;
                // inicializar las imagenes e insertarlas dentro de los rectangulos
                for (int i = 0; i < numImages; i++)
                {
                    // cargar la imagen correspondiente
                    //YA NO HACE FALTA
                    //img[i] = System.Drawing.Image.FromFile(@"C:\...\local3.png");
                    // establecer el alto y ancho del rectangulo                
                    imgs[i].Height = img[i].Height;
                    imgs[i].Width = img[i].Width;
                }
            }

    No se si algo asi es lo que podias estar buscando...

    Nos comentas con lo que sea

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    lunes, 27 de noviembre de 2017 20:27
  • Efectivamente es una sola imagen, que quiero colocar varias veces. para luego con base a la insersion de las imagenes poderlas mostrar en el mismo formulario en modo monitoreo (simulando las antenas que estan activas) en la posicion que coloco.

    Me podria pasar su correo para mandarle mi proyecto y pueda ver mas a fondo el funcionamiento que deseo.

    Le agradecería su apoyo.

     

    lunes, 27 de noviembre de 2017 23:57
  • Buenas,

    Puedes subir el proyecto a alguna plataforma como we transfer o drive, etc y poner el link. Yo me lo descargo en cuanto lo pongas. 

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    martes, 28 de noviembre de 2017 6:40
  • https://1drv.ms/u/s!AoazNigXEQEbh0kX5JH7PF1uU7Xi
    martes, 28 de noviembre de 2017 19:22
  • okey, 

    Le he echado un ojo a tu codigo, y creo que para tu caso particular, ya que vas a instanciar los formularios varias veces, para evitar cargas innecesarias, vamos a hacerlo así:

    Cambia en el MainForm

    //Quita
    private Image[] img = new Image[20];
    //Pon
    private static Image _img = null;
    public static Image img
    {
        get
        {
            if (_img == null)
                _img = System.Drawing.Image.FromFile(@"C:\Users\jdelarosa\Documents\Visual Studio 2012\Projects\Graphic Map\Graphic Map\Resources\local3.png");
            return _img;
    
        }
    }

    Ahora, cada vez que necesites la imagen, da igual en que parte de tu programa, en vez de poner un array, vas a poner (da igual que formulario sea, en cualquiera de ellos) :

    Main_Form.img

    un ejemplo, cambia:

    private void mapaMonitoreo_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
    
        for (int i = 0; i < numImages; i++)
        {
            g.DrawImage(img[i], imgs[i]);
        }
    }
    //Por
    private void mapaMonitoreo_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
    
        for (int i = 0; i < numImages; i++)
        {
            g.DrawImage(MainForm.img, imgs[i]);
        }
    }

    Y así en todos los formularios, siempre que necesites la imagen, con ese simple cambio, puedes borrar todos los img[] del resto de formularios, te puedes olvidar de tener que cargar imagenes, etc... lo que hace este cambio es cargar la imagen en el MainForm, y siempre que la necesites accedes a esa variable de tipo Imagen que tienes cargada en la memoria previamente. Asi, solo vas a tener 1 imagen, que vas a usar en muchos sitios, pero vas a mejorar el consumo de recursos muchisimo

    Si tienes alguna duda al respecto, comentamela

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:


    martes, 28 de noviembre de 2017 20:42
  • pero los img[] los utilizo para mover la imagen.

    Ejecute la aplicacion -> DISPOSITIVOS -> Agregar antena.  haga clic.

    ahi esta el funcionamiento de la app. En la esquina superior izquierdo del formulario (From3) se encuentra la imagen, esa al arrastrarla por el mapa y soltarla te abrira un formulario Agregar Antena (Form2). se hara el registro de la informacion de la antena con sus (detalles, caracteristicas, ubicacion, etc...) al guardar me debera cerrar los 2 formularios el de (Form3) y (Form2) y como quien dice me debe mostral el inicio PRINCIPAL (Mail_Form).

    La imagen, al ser cargado sus datos a una base de datos y mostrarla en el formulario (Form3) como modo monitoreo, ¿como puedo hacer que me la muestre donde la coloque cuando le ponga en MONITOREO -> Iniciar me muestre las imagenes donde las fui poniendo y al hacer clic sobre la imagen me muestre los datos ingresados en el formulario (Form2) a un costado del mapa?

    Saludos, se lo agradesco para seguir aprendiendo

    martes, 28 de noviembre de 2017 23:14
  • Buenas,

    Por lo que he visto, los

    private Image[] img = new Image[20];

    solo almacenan la misma imagen un gran numero de veces, que es lo que con el cambio evitamos, ya que la imagen es siempre la misma, lo que te sirve para molerla, es 

    private Rectangle[] imgs = new Rectangle[20];
    

    y ese si que hay que mantenerlo, ya que almacena los rectángulos donde se van a pintar, pero la imagen que se va a pintar en ese rectángulo, no necesita estar almacenada por separado

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    miércoles, 29 de noviembre de 2017 11:12
  • Buen dia disculpe mi ausencia

    Le comento quite los img[] y agrege lo que me comento y no hizo nada la aplicacion, de hecho ya no me aarastra la imagen.

    saludos cordialmente

    viernes, 1 de diciembre de 2017 16:28
  • Buenas,

    Como es eso de que ya no te arrastra la imagen?

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    viernes, 1 de diciembre de 2017 16:30
  • Es que como te habia comentado al quitar img[i] afectaba otros metodos que lo utilizaba de mi codigo quise remplazar como me comento solo img y me las seguia marcando como error.
    viernes, 1 de diciembre de 2017 18:29
  • Buenas,

    Perdon por la tardanza... han sido dias complejos...

    Pero no acabo de entender, tu variable img[i] es una variable es de tipo Bitmap[] donde solo almacenas imagenes. Las posiciones estan en imgs[i] de tipo Rectangle. Lo que haces, es mover ese rectangle, y volver a pintar la imagen. Podrias comprobar que esto sea asi?

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    lunes, 11 de diciembre de 2017 12:02
  • Buenas Inge

    claro es una variable de tipo Bitmap[], esta a su vez dibujo un rectángulo con la imagen seleccionada, Si es correcto su comentario.  

    como le puedo hacer para que en modo "MONITOREO" cambie la imagen por otra. En este caso sera un monitoreo  en tiempo real.

    y tengo una duda en cuestión de como eliminar una imagen. 


    JavierLg12

    martes, 12 de diciembre de 2017 2:35
  • Buenas,

    Si no recuerdo mal, tu hacias algo como...

    grafics.DrawImage(img[i],imgs[i])

    Realmente, lo que indica la posicion donde pintar es el segundo parametro, el rectangle, por eso te decia, que quitases el Bitmap[] de los formularios, lo cambiases por un public static Bitmap Imagen, y luego lo usases siempre para pitnar la misma imagen, igual que haraias ahora

    grafics.DrawImage(MainForm.Imagen,imgs[i])

    Con esto, la imagen va a ser siempre la misma, pero las coordenadas donde se pintan, van a ser diferentes, porque imgs[] (Rectangle[]) si que lo has mantenido, y si que lo sigues usando

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    martes, 12 de diciembre de 2017 8:00
  • si este caso seria para agregar en una ubicacion una antena.

    Solucion para poder borrar la imagen cuando la quiera quitar?

    Opinion al respecto sobre, Cuando quiera dar de baja una antena, elimine tambien la posicion y la imagen de ubicacion y se refleje automaticamente en el sistema.

    No seria mejor hacer una funcion o un metodo que agrege la imagen en una tabla de la db y su posision y mandarla llamar o invocarla en el modo MONITOREO o en modo de AGREGAR UNA UBICACION.

    Saludos y Buen dia.


    JavierLg12

    martes, 12 de diciembre de 2017 20:23
  • Bueno... si tuvieses varias imagenes distintas si... El tema es que tu solo tienes una....

    lo que puedes hacer, se me ocurre, para poder añadirlas y borrarlas a tu gusto, es en vez de usar Rectangle[] usar List<Rectangle> , eso te permite que el tamaño sea dinamico, y cuando borres una no la pinte, porque hara un for solo de las posiciones donde tienes. Ahora mismo, si tienes una antena borrada, como la eliminas? pones a null el rectangle o asi? porque tu for va a pasar por ese rectangle que has quitado al ser un array de longitud fija...

    Si quieres miramos como seria el tema para usar listas en vez de arrays, creo recordar que no es muy complicado en tu proyecto

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    martes, 12 de diciembre de 2017 20:40
  • Pudiera codificarlo en el proyecto que estoy realizando y reenviarmelo, se me aria a mi un poco difícil ya anteriormente me marcaban algunas lineas de error.

    Le sigo agradeciendo su apoyo, es para mi la oportunidad de seguir aprendiendo.

    Saludos que este bien.

        

    JavierLg12

    martes, 12 de diciembre de 2017 21:13
  • Bueno... si tuvieses varias imagenes distintas si... El tema es que tu solo tienes una....

    lo que puedes hacer, se me ocurre, para poder añadirlas y borrarlas a tu gusto, es en vez de usar Rectangle[] usar List<Rectangle> , eso te permite que el tamaño sea dinamico, y cuando borres una no la pinte, porque hara un for solo de las posiciones donde tienes. Ahora mismo, si tienes una antena borrada, como la eliminas? pones a null el rectangle o asi? porque tu for va a pasar por ese rectangle que has quitado al ser un array de longitud fija...

    Si quieres miramos como seria el tema para usar listas en vez de arrays, creo recordar que no es muy complicado en tu proyecto

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    Buen dia podria ayudarme hacer esa listas para que cuando la agrege en una posición se guarde en el formulario en la posicion alojada.

    Saludos


    JavierLg12

    jueves, 28 de diciembre de 2017 4:41
  • ¿Como la puedo guardar o cargar la imagen junto con su información y poder mostrarla en otro formulario?

    Y que a su vez, si se requiere modificar la ubicación de la imagen y asi como su registro...

    saludos... Es necesario de se ayuda  URGENTE


    JavierLg12

    miércoles, 3 de enero de 2018 2:42