我正在使用以下 C# 代码从剪贴板复制图像。
if (Clipboard.ContainsData(System.Windows.DataFormats.EnhancedMetafile))
{
/* taken from http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/a5cebe0d-eee4-4a91-88e4-88eca9974a5c/excel-copypicture-and-asve-to-enhanced-metafile*/
var img = (System.Windows.Interop.InteropBitmap)Clipboard.GetImage();
var bit = Clipboard.GetImage();
var enc = new System.Windows.Media.Imaging.JpegBitmapEncoder();
var stream = new FileStream(fileName + ".bmp", FileMode.Create);
enc.Frames.Add(BitmapFrame.Create(bit));
enc.Save(stream);
}
我从这里拿了这个片段。控件确实进入 if 条件。Clipboard.GetImage()
返回空值。有人可以建议这里出了什么问题吗?
我也尝试过以下代码段
Metafile metafile = Clipboard.GetData(System.Windows.DataFormats.EnhancedMetafile) as Metafile;
Control control = new Control();
Graphics grfx = control.CreateGraphics();
MemoryStream ms = new MemoryStream();
IntPtr ipHdc = grfx.GetHdc();
grfx.ReleaseHdc(ipHdc);
grfx.Dispose();
grfx = Graphics.FromImage(metafile);
grfx.Dispose();
这也行不通。