WPF对webbrowser里的网页进行截图
发布网友
发布时间:2022-04-23 16:04
我来回答
共1个回答
热心网友
时间:2023-09-11 19:03
RenderTargetBitmap MediaElement截图空白问题
分类: WPF2012-05-10 18:03 572人阅读 评论(0) 收藏 举报
wcfimage
[html] view plaincopy
<MediaElement Name="mediaE" Margin="0,10,0,0" Source="E:\WCF\1.wmv" Width="50" Height="50" Position="0:10:5" ScrubbingEnabled="True"/>
<Image Name="imgClip" Width="50" Height="50" />
当通过RenderTargetBitmap 截图时,有时候会出现空白的问题,导致该问题的原因在于,设置了Margin、HorizontalAlignment或者VerticalAlignment,导致MediaElement离开了他应在的位置,截的图是从原来位置截取的,(例如:当Margin的值按照上面的代码设置,会导致截图的时候上面10个单位的值为空白)所以解决该问题的关键在于不改变MediaElement该在的位置即可,
截图代码如下:
[csharp] view plaincopy
RenderTargetBitmap map = new RenderTargetBitmap(100, 100, 100, 100, PixelFormats.Pbgra32);
map.Render(mediaE);
imgClip.Source = BitmapFrame.Create(map);
参考:
http://blog.csdn.net/jaychouliyu/article/details/7554649
另外可以试试下面代码:
//C#中测试通过!转成WPF应当不难
int height = webBrowser.Document.Body.ScrollRectangle.Height;
int width = webBrowser.Document.Body.ScrollRectangle.Width;
// 调节webBrowser的高度和宽度
webBrowser.Height = height;
webBrowser.Width = width;
Bitmap bitmap = new Bitmap(width, height); // 创建高度和宽度与网页相同的图片
Rectangle rectangle = new Rectangle(0, 0, width, height); // 绘图区域
webBrowser.DrawToBitmap(bitmap, rectangle); // 截图
// 保存图片对话框
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "JPEG (*.jpg)|*.jpg|PNG (*.png)|*.png";
saveFileDialog.ShowDialog();
bitmap.Save(saveFileDialog.FileName); // 保存图片