平山CP3 2021-02-09 18:08 采纳率: 0%
浏览 137

关于.net WebBrowser.DrawToBitmap方法去截图地图html页面不成功

使用WebBrowser.DrawToBitmap,在winform的webbrowser去加载有地图的页面能加载出来,但是像地图页面截出来的图片却是空白的。

截图百度地图样例:

 

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 12:14
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,首先确保你的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);
            }
        }
    }
    

    这段代码中的关键部分是:

    1. WebBrowser控件被正确地设置了HTML源。
    2. DrawToBitmap方法用于绘制网页到图形对象中,并返回了一个Bitmap对象。
    3. 最后,通过调用SaveFileDialog来保存生成的图片。

    请注意,这个解决方案假设你的WebBrowser控件能够正确地渲染包含地图的网页。如果你遇到任何错误,请检查控制台日志或者查看浏览器的帮助文档,以便了解可能导致的问题和解决方案。

    评论

报告相同问题?