Pregunta

Tengo un cuadro de imagen, y si uso snipet a continuación:

Clipboard.SetImage(PictureBox.image)

A continuación, sólo puedo pegar la imagen en cosas como la pintura y la palabra MS. No puedo pegarlo como un archivo en una carpeta / escritorio.

Entonces, ¿cómo puedo copiar la imagen en el portapapeles y si consigue pegado a una carpeta entonces se convierte en un archivo?

¿Fue útil?

Solución

Si está utilizando .NET y su objetivo final es para guardar el archivo, hay mucho más fácil manera,

A continuación, el código en C #, portarlo en VB.net no será difícil, soy demasiado perezoso para hacer eso :) De todos modos, usted tiene que guardar en algún lugar antes de poder pegarla así que ...

Se carga el archivo en el cuadro de imagen y de nuevo lo guarda en un archivo, (cojo, lo sé)  y establecer los datos del portapapeles como una operación de copia

a continuación, al pegar (Ctrl + V), que se pegará.    

C#
__
    Bitmap bmp;
    string fileName=@"C:\image.bmp";
    //here I assume you load it from a file, you might get the image from somewhere else, your code may differ

pictureBox1.Image=(Image) Bitmap.FromFile(fileName); bmp=(Bitmap)pictureBox1.Image; bmp.Save(@"c:\image2.bmp"); System.Collections.Specialized.StringCollection st = new System.Collections.Specialized.StringCollection(); st.Add(@"c:\image2.bmp"); System.Windows.Forms.Clipboard.SetFileDropList(st); </pre>

y viola intenta pegar en una carpeta se pegará el image2.bmp archivo.

Otros consejos

Esta es básicamente lo que ha escrito, pero @Vivek portado a VB. Hasta-votar su si esto funciona para usted. Lo que tienes que entender es que el explorador sólo le permitirá a pegar archivos, no los objetos (que yo sepa de todos modos). La razón es porque si copia los datos de imagen en el portapapeles, qué formato debería pegar? PNG, BMP, JPG? ¿Qué ajustes de compresión? Así como @Vivek dijo, es necesario pensar en las personas mayores, crear un archivo por su cuenta en algún lugar del sistema y utilizar SetFileDropList que agregará el archivo temporal en el portapapeles.

'   Add it as an image
    Clipboard.SetImage(PictureBox1.Image)

    'Create a JPG on disk and add the location to the clipboard
    Dim TempName As String = "TempName.jpg"
    Dim TempPath As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, TempName)
    Using FS As New System.IO.FileStream(TempPath, IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.Read)
        PictureBox1.Image.Save(FS, System.Drawing.Imaging.ImageFormat.Jpeg)
    End Using
    Dim Paths As New System.Collections.Specialized.StringCollection()
    Paths.Add(TempPath)
    Clipboard.SetFileDropList(Paths)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top