簡體   English   中英

如何在不使用Web瀏覽器的情況下呈現HTML元素?

[英]How to render HTML element without using web browser?

有沒有辦法在不使用任何Web瀏覽器控件的情況下在畫布上繪制特定的HTML元素內容?

使用此代碼,我將元素呈現給窗體的畫布(僅作為示例)。
它雖然有效,但這段代碼不是一個好習慣 - 見下文,為什么......

uses
  SHDocVw, MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
var
  WebBrowser: TWebBrowser;
  HTMLElement: IHTMLElement;
  HTMLRenderer: IHTMLElementRender;
begin
  WebBrowser := TWebBrowser.Create(nil);
  try
    WebBrowser.ParentWindow := Application.Handle;
    WebBrowser.Navigate('https://stackoverflow.com/questions/2975586/good-delphi-blogs');

    while WebBrowser.ReadyState < READYSTATE_COMPLETE do
      Application.ProcessMessages;

    HTMLElement := (WebBrowser.Document as IHTMLDocument3).getElementById('question');
    HTMLRenderer := (HTMLElement as IHTMLElementRender);
    HTMLRenderer.DrawToDC(Canvas.Handle);

  finally
    HTMLElement := nil;
    HTMLRenderer := nil;
    WebBrowser.Free;
  end;
end;

這很糟糕,因為

有沒有一種干凈的方法來解決這個使用MSHTML?

DrawToDC和IViewObject都需要TWebBrowser控件才能將文檔實際呈現為目標DC。

也許你可以嘗試THtmlViewer? http://code.google.com/p/thtmlviewer/

THTMLabel從TMS軟件

暫無
暫無

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

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