Copier l'image dans le presse-papiers et laissez-coller sous forme de fichier (vb.net)
Question
J'ai une zone d'image, et si je l'utilise snipet ci-dessous:
Clipboard.SetImage(PictureBox.image)
Alors je ne peux coller l'image dans des choses comme la peinture et le MS Word. Je ne peux pas le coller comme un fichier dans un dossier / bureau.
Alors, comment puis-je copier l'image dans le presse-papiers et si obtient collé à un dossier, puis il devient un fichier?
La solution
Si vous utilisez .net et votre but ultime est d'enregistrer le fichier, il y a beaucoup plus facile,
Voici le code en C #, le portage dans VB.net ne sera pas difficile, je suis trop paresseux pour le faire :) Quoi qu'il en soit, vous ne devez enregistrer quelque part avant de pouvoir coller alors ...
Il charge le fichier dans la boîte de l'image et il enregistre à nouveau dans un fichier, (boiteux, je sais) et définir les données du presse-papiers comme une opération de copie
puis lorsque vous collez (Ctrl + V), il se collé.
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>
et alto essaie de coller dans un dossier sera collé le fichier image2.bmp.
Autres conseils
Voici essentiellement ce que @Vivek affiché, mais à VB porté. Up-voix son si cela fonctionne pour vous. Ce que vous devez comprendre est que l'explorateur ne vous permettra de coller des fichiers, et non pas des objets (AFAIK de toute façon). La raison en est parce que si vous copiez des données d'image dans le presse papier, quel format doit-elle coller? PNG, BMP, JPG? Quels sont les paramètres de compression? Ainsi, comme l'a dit @Vivek, vous devez penser les plus, créez un fichier sur votre propre quelque part sur le système et utiliser SetFileDropList
qui ajoutera le fichier temporaire dans le presse papier.
' 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)