2013-02-10 40 views
1

我試圖從網站採取圖片元素,並將其顯示在PictureBox中。代碼不會返回任何錯誤,但不會顯示任何內容。pictureBox.ImageLocation無法檢索HTMLElement

我使用一個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 ^這是與該例子中的橙色背景的鳥。

回答

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; 
    } 
} 

祝你好運!

+0

我試着運行下面的代碼:http://pastebin.com/TUV6xABS只有一個pictureBox在我的form1 ..我沒有得到任何錯誤,但沒有顯示,我做錯了什麼? – Abraham 2013-02-12 22:50:00

+0

這很奇怪。設置斷點,獲取src,將其複製並粘貼到瀏覽器上,看看圖像是否顯示。 – 2013-02-12 23:27:33

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; 
    } 
+0

我收到IHTMLImgElement和IHTMLElementRenderFixed錯誤,說他們不存在,我需要什麼名稱空間? – Abraham 2013-02-10 22:36:15