我用c#写了个winform程序,一个窗体有一个控件(webBrowser控件),我在窗体的OnPaint里面绘图,但是绘制的图形永远在webBrowser控件的下面,我想让绘制的图形在webBrowser控件上面产生叠加效果,怎么办?

解决方案 »

  1.   

    是说在控件上绘图么
    Graphics g = Graphics.FromHwnd(你的控件名.Handle);
    g.FillEllipse(Brushes.Yellow, 0, 0, 10, 10);//随便写的,你可以根据需求改
      

  2.   

    winform会先调用OnPaint,再绘制窗体上本身有的控件。
      

  3.   

    “winform会先调用OnPaint,再绘制窗体上本身有的控件。”
    这个顺序是否能改?或者是否有事件是先绘制本身所有控件,再绘制我的图形?
      

  4.   

    Graphics g = this.webBrowser1.CreateGraphics();
      

  5.   

    两个方法:
    1.在webBrowser1里面调用PAINT事件进行绘制,而不是在窗口进行绘制
    2.试一下将你的OnPaint事件的调用,放在 FORM_LOAD事件 里,这样,他应该就会先添加控件,再绘制。
      

  6.   

    1.放一个Pic控件,放到底层,不可见.
    2.需要叠加的时候,放到顶层,可见.大小位置自己定
      

  7.   

    using(Graphics g = this.webBrowser1.CreateGraphics())
      

  8.   

    有个办法你可以试试,在文档加载完成以后,直接操纵DOM向页面里添加一个IMG或其它元素,然后来实现你的需求。
      

  9.   

    别折腾了,WebBrowser控件总是在winform控件最上面表示,基本不可以达到这个效果,除非,你在上面添加一个窗体,置为最顶端。但是那样也不好。