Domanda

Ho una casella di immagine, e se uso snipet qui di seguito:

Clipboard.SetImage(PictureBox.image)

Quindi posso incollare solo l'immagine in cose come Paint e MS Word. Non posso incollarlo come un file in una cartella / desktop.

Così come posso copiare l'immagine negli appunti e se viene incollato in una cartella allora diventa un file?

È stato utile?

Soluzione

Se si sta utilizzando .NET e il vostro obiettivo finale è quello di salvare il file, c'è molto più facile modo,

Ecco il codice in C #, il porting in VB.net non sarà difficile, io sono troppo pigro per farlo :) In ogni caso, si ha a salvarlo da qualche parte prima di poter incollarlo in modo ...

Si carica il file nella casella di immagine e di nuovo lo salva in un file, (zoppo, lo so)  e impostare i dati degli Appunti come un'operazione di copia

poi quando si incolla (Ctrl + V), esso viene incollato.    

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>

e viola cerca incollare in una cartella il file bild2.bmp sarà incollata.

Altri suggerimenti

Ecco fondamentalmente quello @Vivek pubblicato ma porting a VB. Up-voto sua se questo funziona per voi. Quello che devi capire è che explorer solo permetterà di incollare i file, non oggetti (per quanto ne so in ogni caso). La ragione è che se si copiano i dati delle immagini negli appunti, quale formato dovrebbe incollare? PNG, BMP, JPG? Cosa compressione impostazioni? Così come @Vivek ha detto, è necessario pensare quelli oltre, creare un file sul proprio da qualche parte nel sistema e utilizzare SetFileDropList che andrà ad aggiungersi il file temporaneo negli Appunti.

'   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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top