我使用MS-Word Com API在剪贴板中复制了一些数据
Range.CopyAsPicture();
当我粘贴(Ctrl + v)时,它会在窗口的绘图软件上显示出来。
问题是将剪贴板数据转换为图像时使用c# 我查看了互联网上的各种链接,并尝试使用无效的代码
MemoryStream ms = Clipboard.GetData("DeviceIndependentBitmap") as MemoryStream;
返回null
clipboardData.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap)
返回false
任何人都可以建议如何将剪贴板数据转换为图像。
答案 0 :(得分:0)
如果您要查找的只是获取剪贴板中图像的位图(或基础二进制数据),请查看使用GetImage。 以下是您可以尝试的代码段:
BitmapSource bmpSource = Clipboard.GetImage();
MemoryStream ms = new MemoryStream();
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmpSource));
encoder.Save(ms);
ms.Seek(0, SeekOrigin.Begin);
如果它似乎也不起作用,你可以尝试查看this workaround,它看起来并不直接相关,但它可能正是你所需要的。
答案 1 :(得分:0)
显然,MS Office将图像作为PNG字节流放在剪贴板上,这实际上是一种非常明智的创新。此图像数据仅使用标识符" PNG"。
所以试试这个:
if (retrievedData.GetDataPresent("PNG"))
{
MemoryStream png_stream = retrievedData.GetData("PNG") as MemoryStream;
if (png_stream != null)
return new Bitmap(png_stream);
}