Pergunta

Eu tenho uma caixa de fotos e, se eu usar o snipet abaixo:

Clipboard.SetImage(PictureBox.image)

Então eu só posso colar a imagem em coisas como tinta e ms word. Não consigo colar como um arquivo em uma pasta/desktop.

Então, como posso copiar a imagem para a área de transferência e se for colado em uma pasta, ela se torna um arquivo?

Foi útil?

Solução

Se você está usando o .NET e seu objetivo final é salvar o arquivo, há muito mais fácil maneira,

Aqui o código em C#, portá -lo para o VB.NET não será difícil, estou com preguiça de fazer isso :) De qualquer forma, você precisa salvá -lo em algum lugar antes que possa colá -lo para ...

Ele carrega o arquivo na caixa de imagem e o salva novamente em um arquivo (LAME, eu sei) e define os dados da área de transferência como uma operação de cópia

Então, quando você cola (Ctrl+V), ele é colado.

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 tenta colar em uma pasta, a imagem do arquivo.bmp será colada.

Outras dicas

Aqui está basicamente o que o @Vivek postou, mas portado para o VB. Vote dele se isso funcionar para você. O que você precisa entender é que o Explorer permitirá que você coloque arquivos, não objetos (Afaik de qualquer maneira). O motivo é porque se você copiar dados da imagem para a área de transferência, qual formato ele deve colar? PNG, BMP, JPG? Quais configurações de compressão? Assim como o @Vivek disse, você precisa pensar em acabar com isso, criar um arquivo por conta própria em algum lugar do sistema e usar SetFileDropList que adicionará o arquivo temp à área de transferência.

'   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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top