Очистка графики прозрачной панели C#

У меня есть элемент управления WebBrowser с прозрачной панелью поверх него, и я пытаюсь нарисовать прямоугольник на прозрачной панели вокруг элемента на странице, над которым находится указатель мыши.

Пока у меня все работает, за исключением того, что панель не очищается перед рисованием следующего прямоугольника, поэтому я получаю прямоугольники повсюду.

Вот код, который я использую.

paneGraphics = drawingPane.CreateGraphics();

Rectangle inspectorRectangle;

inspectorRectangle = controller.inspectElement();

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

drawingPane.Invalidate();

Я пробовал использовать DrawingPane.clear(), но это просто превращает экран в белый.


person Community    schedule 28.04.2009    source источник


Ответы (2)


Взгляните на код проекта OpenPandora.

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  
    }
}
person Nik    schedule 21.05.2010

Ты пробовал:

graphics.Clear(Color.Transparent);
person Meta-Knight    schedule 28.04.2009
comment
Я пробовал graphics.clear(Color.Transparent); графика.очистить(Цвет.Пустой); и graphics.clear(Color.White); Белый был ближе всего к тому, что я хочу, так как он все очищает и рисует один прямоугольник в нужном месте, но панель больше не прозрачна. - person Morgeh; 29.04.2009