1

我正在尝试从网站获取图片元素并将其显示在 PictureBox 中。代码不返回任何错误,但没有显示任何内容。

我正在使用 WebBrowser 类并尝试使用在网页完成加载后调用的事件来显示元素

                void wb_DocumentCompleted(object sender,       WebBrowserDocumentCompletedEventArgs e)
    {
        pictureBox1.ImageLocation = wb.Document.GetElementById("ctl00_mainContent_identityBar_emblemImg").InnerText; // does nothing       
        label1.Text = "Last Played: " + wb.Document.GetElementById("ctl00_mainContent_lastPlayedLabel").InnerText; // works fine
    }

这是我试图从中提取图像的网页示例:http ://halo.bungie.net/Stats/Halo3/Default.aspx?player=SmitherdxA27 ^这是该示例中橙色背景的鸟。

4

2 回答 2

1

挺容易:

private void Form1_Load(System.Object sender, System.EventArgs e)
{
    webBrowser1.Navigate("http://halo.bungie.net/Stats/Halo3/Default.aspx?player=SmitherdxA27");
}

private void WebBrowser1_DocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e)
{
    if ((e.Url.ToString() == "http://halo.bungie.net/Stats/Halo3/Default.aspx?player=SmitherdxA27"))
    {
        HtmlElement elem = webBrowser1.Document.GetElementById("ctl00_mainContent_identityStrip_EmblemCtrl_imgEmblem");
        string src = elem.GetAttribute("src");
        this.pictureBox1.ImageLocation = src;
    }
}

祝你好运!

于 2013-02-11T23:51:18.533 回答
0

它不返回任何内容,因为图像标签不包含内部文本。您需要使用该元素并生成位图。

public Bitmap GetImage(string id)
    {
        HtmlElement e = webBrowser1.Document.GetElementById(id);
        IHTMLImgElement img = (IHTMLImgElement)e.DomElement;
        IHTMLElementRenderFixed render = (IHTMLElementRenderFixed)img;

        Bitmap bmp = new Bitmap(e.OffsetRectangle.Width, e.OffsetRectangle.Height);
        Graphics g = Graphics.FromImage(bmp);
        IntPtr hdc = g.GetHdc();
        render.DrawToDC(hdc);
        g.ReleaseHdc(hdc);

        return bmp;
    }
于 2013-02-10T21:57:20.830 回答