1

Web サイトから画像要素を取得して、PictureBox 内に表示しようとしています。コードはエラーを返しませんが、何も表示されません。

私は WebBrowser クラスを使用しており、Web ページの読み込みが完了すると呼び出されるイベントを使用して要素を表示しようとしています

                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
    }

画像を取得しようとしている Web ページの例を次に示します: 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

画像タグには内部テキストが含まれていないため、何も返されません。the 要素を使用してビットマップを生成する必要があります。

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 に答える