2013-02-10 2 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 на моей форме1. У меня не было никаких ошибок, но ничего не отображалось, что я делаю неправильно? – Abraham

+0

Это очень странно. Установите контрольную точку, получите src, скопируйте ее и вставьте в браузер и посмотрите, отображается ли изображение. –

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