将剪贴板数据保存为图像时出现问题

时间:2014-12-21 06:58:15

标签: c# .net clipboard wpf-4.0

我使用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

以上的行

任何人都可以建议如何将剪贴板数据转换为图像。

2 个答案:

答案 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);
}