使用WebBrowser.DrawToBitmap,在winform的webbrowser去加载有地图的页面能加载出来,但是像地图页面截出来的图片却是空白的。
截图百度地图样例:
使用WebBrowser.DrawToBitmap,在winform的webbrowser去加载有地图的页面能加载出来,但是像地图页面截出来的图片却是空白的。
截图百度地图样例:
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
要解决这个问题,首先确保你的WebBrowser
控件已经正确配置了HTML源。这通常意味着在WebBrowser.Navigate()
调用之前,你需要设置一个合适的URL(例如:http://www.baidu.com/map.html
)。此外,你可能需要考虑浏览器是否支持渲染地图图像。如果可能的话,尝试将DrawToBitmap
调用与RenderMapImage
或类似的方法结合在一起,以避免显示为空白。
以下是一个示例代码片段,展示如何处理上述问题:
using System;
using System.Drawing;
using System.Windows.Forms;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnLoadPage_Click(object sender, EventArgs e)
{
// 设置网页来源
WebBrowser webBrowser = new WebBrowser();
webBrowser.Url = new Uri("http://www.baidu.com/map.html");
// 使用DrawToBitmap方法绘制网页到图形对象中
Bitmap bitmap = (Bitmap)webBrowser.DrawToBitmap(new Rectangle(0, 0, 800, 600), null);
// 将绘制后的图形转换为图片并保存
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "PNG文件|*.png";
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
bitmap.Save(saveFileDialog.FileName);
}
}
}
这段代码中的关键部分是:
WebBrowser
控件被正确地设置了HTML源。DrawToBitmap
方法用于绘制网页到图形对象中,并返回了一个Bitmap
对象。SaveFileDialog
来保存生成的图片。请注意,这个解决方案假设你的WebBrowser
控件能够正确地渲染包含地图的网页。如果你遇到任何错误,请检查控制台日志或者查看浏览器的帮助文档,以便了解可能导致的问题和解决方案。