【发布时间】:2009-11-18 15:51:13
【问题描述】:
我在 WindowsFormsHost 中有一组控件,我想捕获当前视图并将其保存为图像,但是我只能在图像中看到一些 Panel。
是否可以将 WindowsFormsHost 用作“视觉对象”并捕获包装的控件?
看我的例子:
<WindowsFormsHost x:Name="windowHost">
<wf:Panel Dock="Fill" x:Name="basePanel"/>
</WindowsFormsHost>
如果我要向basePanel 添加按钮或其他任何内容,则在使用以下代码导出到 PNG 时将不可见:
RenderTargetBitmap rtb = new RenderTargetBitmap(basePanel.Width,
basePanel.Height, 96, 96, PixelFormats.Pbgra32);
rtb.Render(windowHost);
PngBitmapEncoder pnge = new PngBitmapEncoder();
pnge.Frames.Add(BitmapFrame.Create(rtb));
Stream stream = File.Create("test.jpg");
pnge.Save(stream);
stream.Close();
关于为什么这可能不起作用以及可能的解决方法的建议?我想这不是真的应该以这种方式工作,但人们真的希望!
【问题讨论】: