web下的html不显示,如何在不使用Web浏览器的情况下呈现HTML元素?

有没有办法在画布上绘制特定的

HTML元素内容,而不使用任何Web浏览器控件?

使用这个代码,我将元素渲染到窗体的画布上(就像一个例子).

它的作品虽然,但这个代码不是一个好的做法 – 见下文,为什么…

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;

这是坏的,因为

>它使用隐藏的TWebBrowser控件,但我想直接通过IHTMLDocument界面加载HTML文档,并在我自己的画布上渲染某些元素

>如果我创建并手动加载IHTMLDocument this way那么渲染器方法IHTMLElementRender.DrawToDC不会绘制任何东西(也许是因为没有用于渲染文档的画布)

>更糟糕的是,IHTMLElementRender.DrawToDC在这个时候被弃用,所以我正在寻找一种替代方法来渲染我自己的画布上的元素

有没有一个干净的方式来解决这个使用MSHTML?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值