Respondida Añadir función ''insertar imagen''

  • domingo, 31 de enero de 2010 22:07
     
     
    Hola, tengo VS2008 Professional y quisiera saber cómo insertar un formulario de inserción de imagen en un editor de texto (por ejemplo) que yo crease en Visual Basic o en C# (explíqueme cómo debo hacer lo que les pregunto en cada uno de estos lenguajes: VB y C#).
    Es decir, para que yo pueda crear una opción/función de ''Insertar imagen''. 

    Ángel Manuel

Todas las respuestas

  • domingo, 31 de enero de 2010 22:16
    Moderador
     
     
    hola

    ese editor de texto que mencionas con que control lo estas desarrollando ?

    sera quizas el RichTextBox


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
  • lunes, 01 de febrero de 2010 10:01
     
     
    Igual que hay controles en Visual Studio para abrir y guardar archivos, o modificar fuente,cómo asignar un control de inserción de imagen. (por si creare un editor de texto tipo WOrdPad)
    Ángel Manuel
  • lunes, 01 de febrero de 2010 12:21
    Moderador
     
     
    :-)
    Hola,

    No es sencillo personalizar el diálogo de Abrir archivo, pero puede hacerse. Aquí tienes una forma:
    http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx

    La otra es crearte tu propio formulario, que muestre una lista de los ficheros de una carpeta y un pictureBox para previsualizar el fichero.
    Saludos,

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

  • lunes, 01 de febrero de 2010 14:10
     
     
    Pero yo quiero insertar una función que permita insertar una imagen en el texto (en este caso de un editor de texto), mejor dicho, en la que el usuario de la aplicación que yo crease, pueda añadir una imagen a la vez que texto. Algo como esto:

    FUNCIÓN ''INSERTAR IMAGEN'' en WORDPAD


    Ángel Manuel
  • lunes, 01 de febrero de 2010 14:44
    Moderador
     
     
    :-)
    Hola Angel,

    Es que este cuadro de diálogo que nos muestras es un OpenFileDialog con el título cambiado y con un filtro que sólo permite seleccionar imágenes. Si le sumas que se abre por defecto en la carpeta de imágenes del usuario... tachán! Ya tienes un cuadro de diágolo para seleccionar imágenes.

    Saludos,

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

  • lunes, 01 de febrero de 2010 14:48
     
     
    Pues explíqueme por favor qué hacer para que éste sólo permita seleccionar imágenes e insertarlas. Dígame cómo hacerlo en Visual C# y en Visual Basic, (o si se hace en ambos lenguajes de la misma manera)
    Ángel Manuel
  • lunes, 01 de febrero de 2010 15:26
    Moderador
     
     
    hola

    por ahi algo como esto sea de utilidad

    Customizing OpenFileDialog in .NET


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
  • lunes, 01 de febrero de 2010 15:34
    Moderador
     
     
    :-)))
    Leandro... que es el mismo enlace que le he pasado antes, jejeje.
    No te preocupes, ya le estoy preparando un ejemplo... ahora lo publico.

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

  • lunes, 01 de febrero de 2010 15:40
    Moderador
     
      Tiene código
    :-)
    Hola,
    Prueba este código:

            private void button1_Click(object sender, EventArgs e)
            {
                openFileDialog.Filter = "Sólo imágenes|*.jpg;*.pgn;*.gif";
                openFileDialog.Title = "Selecciona una imágen";
                openFileDialog.InitialDirectory = Environment.GetFolderPath(
                    Environment.SpecialFolder.MyPictures);
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    this.BackgroundImage = Image.FromFile(openFileDialog.FileName);
                }
            }
    Observa que se establece el filtro del diálogo, el título y la carpeta inicial. El resto es comprobar si se ha seleccionado una imágen y cargarla en el form.

    Saludos,

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

  • lunes, 01 de febrero de 2010 15:40
    Moderador
     
     
    hola

    uuhh si, disculpa no habia visto que ya habias recomendado ese link

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
  • lunes, 01 de febrero de 2010 16:02
     
     
    He empleado ese código en un proyecto C# con un RichTextBox, y un MenuStrip, y el usuario puede hacer clic en el acceso al formulario de imagen, pero selecciona la imagen y no se inserta. (¿entonces como desarrollan Word, WordPad u OpenOffice?)
    Ángel Manuel
  • lunes, 01 de febrero de 2010 16:27
    Moderador
     
     Respondida Tiene código
    :-)
    Hola de nuevo,

    El código que te he pasado lo que hace es obtener la ruta a una imagen de una caprpeta, y luego la carga en el fondo del formulario. Si lo que quieres es insertarla en un RichTextBox debes hacer lo siguiente:

            public const uint WM_PASTE = 0x302;
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            public static extern int SendMessage(
                int hWnd, uint Msg, long wParam, long lParam);
    
            private void insertPictureInRichTextBox(RichTextBox RTB, Image Picture)
            {
                Clipboard.SetDataObject(Picture);
                DataFormats.Format myFormat = DataFormats.GetFormat (DataFormats.Bitmap);
                if (RTB.CanPaste(myFormat))
                {
                    RTB.Paste(myFormat);
                }
                else
                {
                  MessageBox.Show("Formato incorrecto!");
                }
            }
    Y llamar a la función de este modo:

            private void button1_Click(object sender, EventArgs e)
            {
                openFileDialog.Filter = "Sólo imágenes|*.jpg;*.pgn;*.gif";
                openFileDialog.Title = "Selecciona una imágen";
                openFileDialog.InitialDirectory = Environment.GetFolderPath(
                    Environment.SpecialFolder.MyPictures);
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    insertPictureInRichTextBox(richTextBox1, 
                        Image.FromFile(openFileDialog.FileName));
                }
            }

    Por cierto, para el desarrollo de Word y las demás aplicaciones que comentas no se utiliza este control. Es demasiado sencillo. Existen en el mercado otros controles de edición de texto para Windows / Web.

    Nota: El código está en C# pero puedes convertirlo a VB mediante cualquier conversor de los muchos que existen.

    Saludos,

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

  • martes, 02 de febrero de 2010 14:46
     
      Tiene código
    :-)
    Hola de nuevo,

    El código que te he pasado lo que hace es obtener la ruta a una imagen de una caprpeta, y luego la carga en el fondo del formulario. Si lo que quieres es insertarla en un RichTextBox debes hacer lo siguiente:

            public const uint WM_PASTE = 0x302;
    
            [System.Runtime.InteropServices.DllImport("user32.dll")]
    
            public static extern int SendMessage(
    
                int hWnd, uint Msg, long wParam, long lParam);
    
    
    
            private void insertPictureInRichTextBox(RichTextBox RTB, Image Picture)
    
            {
    
                Clipboard.SetDataObject(Picture);
    
                DataFormats.Format myFormat = DataFormats.GetFormat (DataFormats.Bitmap);
    
                if (RTB.CanPaste(myFormat))
    
                {
    
                    RTB.Paste(myFormat);
    
                }
    
                else
    
                {
    
                  MessageBox.Show("Formato incorrecto!");
    
                }
    
            }
    
    
    Y llamar a la función de este modo:

            private void button1_Click(object sender, EventArgs e)
    
            {
    
                openFileDialog.Filter = "Sólo imágenes|*.jpg;*.pgn;*.gif";
    
                openFileDialog.Title = "Selecciona una imágen";
    
                openFileDialog.InitialDirectory = Environment.GetFolderPath(
    
                    Environment.SpecialFolder.MyPictures);
    
                if (openFileDialog.ShowDialog() == DialogResult.OK)
    
                {
    
                    insertPictureInRichTextBox(richTextBox1, 
    
                        Image.FromFile(openFileDialog.FileName));
    
                }
    
            }
    
    

    Por cierto, para el desarrollo de Word y las demás aplicaciones que comentas no se utiliza este control. Es demasiado sencillo. Existen en el mercado otros controles de edición de texto para Windows / Web.

    Nota: El código está en C# pero puedes convertirlo a VB mediante cualquier conversor de los muchos que existen.

    Saludos,

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco


    ¿Y de qué sitios podría bajar yo otros controles de edición de texto de los que vd. me habla?
    He insertado la imagen, pero cuando se reduce, se estropea la calidad.
      public const uint WM_PASTE = 0x302;
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            public static extern int SendMessage(
                int hWnd, uint Msg, long wParam, long lParam);
    
            private void insertPictureInRichTextBox(RichTextBox RTB, Image Picture)
            {
                Clipboard.SetDataObject(Picture);
              	 DataFormats.Format myFormat = DataFormats.GetFormat (DataFormats.Bitmap);
                if (RTB.CanPaste(myFormat))
                {
                    RTB.Paste(myFormat);
                }
                else
                {
                  MessageBox.Show("Formato incorrecto!");
                }
            }
    
    En este blóque de código, que le muestro, podría cambiar ''Bitmap'' (en la 10 linea) por lo relacionado a los formatos PNG y JPG.
    Ángel Manuel
  • miércoles, 03 de febrero de 2010 18:26
     
     
    Pero en ese mismo bloque de código, qué debo insertar para cambiar "Bitmap" por PNG, digo lo que reemplace a dicha palabra.
    Ángel Manuel
  • viernes, 05 de febrero de 2010 12:18
     
      Tiene código
    public const uint WM_PASTE = 0x302;
            [System.Runtime.InteropServices.DllImport("user32.dll")]
            public static extern int SendMessage(
                int hWnd, uint Msg, long wParam, long lParam);
    
            private void insertPictureInRichTextBox(RichTextBox RTB, Image Picture)
            {
                Clipboard.SetDataObject(Picture);
              	 DataFormats.Format myFormat = DataFormats.GetFormat (DataFormats.Bitmap);
                if (RTB.CanPaste(myFormat))
                {
                    RTB.Paste(myFormat);
                }
                else
                {
                  MessageBox.Show("Formato incorrecto!");
                }
            }
    Quiero saber qué debo hacer para que en este bloque de código, pueda cambiar ''bitmap'' a ''PNG'' (mejor dicho lo que debería escribir) y segundo, qué debería de hacer y en cuál de los 2 bloques de código para que al insertarse la imagen, apareciera en unas dimensiones definidas por mi y no las originales del archivo.
    Ángel Manuel
  • jueves, 11 de agosto de 2011 12:08
     
     

    Gracias Lius franco me a valido mucho.

    Sabrias decirme como se imprime un listBox.

    De casiti MUCHAS GRACIAS

  • martes, 07 de agosto de 2012 21:14
     
      Tiene código

    geniooooooooooo!!!!! "

    this.BackgroundImage = Image.FromFile(openFileDialog.FileName);
    

    "

    me salvasteee!!!!!


    juan mejia