簡體   English   中英

如何從 TWebBrowser 獲取圖像到 TImage

[英]how to get image from TWebBrowser into a TImage

我在表單頂部有一個面板,其中設置了一個小的 TMemo 作為 URL 的放置目標。 在此之下,我有一個帶有 2 個選項卡的頁面控件。 我在一個選項卡中設置了 TWebBrowser,在第二個選項卡中設置了一些其他內容。 在 TWebBrowser 中,我需要登錄到我們擁有的 bug 票務網站,然后瀏覽票證。 某些門票包含指向客戶希望我們使用的小圖像的鏈接(想想徽標之類的東西)。 我可以左鍵單擊它們,然后將鏈接從 TWebBrowser 拖放到表單頂部的 TMemo。 這會按預期拾取圖像的 URL 和標題。

關聯的 OnDrop 事件也切換到第二個選項卡,我在其中單擊“處理”按鈕。 這會導致瀏覽器導航到圖像(通過 Navigate2),然后將其加載到瀏覽器 window 中。 此時,該圖像就是瀏覽器 window 中的全部內容。

所以現在我需要代碼來抓取圖像並將其加載到第二個標簽頁上的 TImage 中。 FWIW,原始圖像是PNG。

我能夠從目標圖像中獲取圖像的高度和寬度,但大多數時候我並沒有讓圖像本身顯示在 TImage 中。 有時,但大多不是。 我可以很好地將 PNG 加載到這些圖像對象中,所以我知道它可以正確顯示 PNG。

(也許有一種方法可以直接下載圖像,但我無法讓它工作。TWebBrowser 用於登錄到提供圖像的內部錯誤票務系統,我可以訪問該站點僅當它在同一個表單上並且我已經登錄時。否則,DL 會加載 HTML 登錄頁面而不是圖像。如果在當前框架中有辦法做到這一點,我願意接受建議。)

我使用IHTMLElement2.getelementsByTagName('img')在 web 頁面上找到圖像文件並獲取第一個(因為我知道 web 頁面上的所有內容)。

  img := getFirstImage;
  Image1_frame.Height := img.height+2;
  Image1_frame.Width := img.width+2;
  rnd := img as IHTMLElementRender ;
  rnd.DrawToDC(Image1.Canvas.Handle);

Image1 在名為 Image1_frame 的面板上與客戶端對齊。 所以我設置了框架的 H & W——它們設置好了。

但圖像通常不可見。 它只是白色的。

我看到 DrawToDC 已被棄用,但我還沒有找到替換它的內容。

您可以使用此方法自動登錄(如果需要): 自動登錄 (webBrowser)

然后你可以使用它來獲取 Image: Image from TWebBrowser to TPicture

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM