清除透明面板C#的图形

时间:2009-04-28 14:00:17

标签: c# graphics panel transparent

我有一个WebBrowser控件,顶部有一个透明面板,我想要做的是在鼠标悬停在页面上的元素周围的透明面板上绘制一个矩形。

到目前为止,我已经完成了所有工作,除了在绘制下一个矩形之前没有清除面板,所以我到处都是矩形。

继承我正在使用的代码。

paneGraphics = drawingPane.CreateGraphics();

Rectangle inspectorRectangle;

inspectorRectangle = controller.inspectElement();

paneGraphics.DrawRectangle(new Pen(Color.Blue, 1), inspectorRectangle);     

drawingPane.Invalidate();

我尝试过使用drawingPane.clear(),但只是将屏幕变白了。

2 个答案:

答案 0 :(得分:2)

查看OpenPandora项目的code

public class TransparentPanel : Panel
{
    Timer Wriggler = new Timer();

    public TransparentPanel()
    {
        Wriggler.Tick += new EventHandler(TickHandler);
        this.Wriggler.Interval = 500;
        this.Wriggler.Enabled = true;
    }

    protected void TickHandler(object sender, EventArgs e)
    {
        this.InvalidateEx();
    }

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;

            cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT 

            return cp;
        }
    }

    protected void InvalidateEx()
    {
        if (Parent == null)
        {
            return;
        }

        Rectangle rc = new Rectangle(this.Location, this.Size);

        Parent.Invalidate(rc, true);
    }

    protected override void OnPaintBackground(PaintEventArgs pevent)
    {
        // Do not allow the background to be painted  
    }
}

答案 1 :(得分:0)

你有没有尝试过:

graphics.Clear(Color.Transparent);