如题,不知道如何可以取出TWebBrowser的背景,或者可以用透明PNG画出,然后只显示HTML内容,没有那白色的浏览器背景。谢谢!

解决方案 »

  1.   

    Internet Explorer不支持。TWebBrowser是基于Internet Explorer的,所以也不支持。
      

  2.   

    在mianform类中定义:
    procedure OleMessage(var Msg:TMessage);        //消息处理
    var
    OldMessage:TWndMethod; procedure TMainForm.FormShow(Sender: TObject);
    begin
      //为 WebBrowser指定新的消息函数
      OldMessage:=WebBrowser1.WindowProc;
      WebBrowser1.WindowProc:=OleMessage;
    end;
    //WebBrowser消息处理
    procedure TMainForm.OleMessage(var Msg:TMessage);
    begin
       f Msg.Msg=WM_PAINT then
       begin
          //先执行默认的消息处理
          OldMessage(Msg);
          TWebBrowser(WebBrowser1).Canvas.Handle := TWMPaint(Msg).DC;
          TWebBrowser(WebBrowser1).Canvas.StretchDraw(TWebBrowser     (WebBrowser1).Canvas.ClipRect,bitmap);
          TWebBrowser(WebBrowser1).Canvas.Handle :=0;
       end
       
    end;
      

  3.   

    感谢楼上的源代码,但是TWebBrowser好像没有canvas属性啊!是不是要包含其他东西?
      

  4.   

    哦,上面代码以前给olecontainer用的,webbrowser及祖先类没有canvas,可间接实现:
       
    procedure TMainForm.OleMessage(var Msg:TMessage);
    var
      c:TCanvas;
      bitmap:TBitmap;
    begin
        OldMessage(Msg);
    if Msg.Msg=WM_PAINT then
       begin
          //先执行默认的消息处理
        bitmap:=TBitmap.Create;
        bitmap.LoadFromFile('d:\dzrsgl\zt.bmp');
        c:=TControlCanvas.Create;
        TControlCanvas(c).Control:=WebBrowser1;
        c.Brush.Style:=bsClear;
        c.StretchDraw(c.ClipRect,bitmap);
      end
       
    end;
      

  5.   

    非常感谢楼上的回答!高手啊!
    现在可以画出BMP的图像,但是如果我想用PNG或者干脆不画出来,有什么方法推荐么?谢谢!
      

  6.   

    你可将png转成bmp就可以了,不画出来?