将BitmapSource复制到剪贴板

时间:2015-04-27 18:24:07

标签: c# wpf share clipboard bitmapsource

我试图做一个客户端服务器程序,可以在其中共享剪贴板的内容。

剪贴板包含图片时出现问题。我能够将BitmapSource编码为字节数组,发送它然后解码并将其注入服务器剪贴板。但是当我尝试将剪贴板粘贴到像Paint或Gimp这样的程序中时,由于无法识别数据,我收到错误。

这是客户端代码:

if (Clipboard.ContainsImage())
{
    JpegBitmapEncoder encoder = new JpegBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(Clipboard.GetImage()));
    using (MemoryStream ms = new MemoryStream())
    {
        encoder.Save(ms);
        return ms.ToArray();
    }
}

这是服务器代码:

JpegBitmapDecoder jpegd = null;
using (MemoryStream ms = new MemoryStream(b)) // b is the byte array received from the client
{
      jpegd = new JpegBitmapDecoder(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None);
}
BitmapSource bitmapSource = jpegd.Frames[0];

// Inject data into the clipboard
Clipboard.SetImage(bitmapSource);

0 个答案:

没有答案