2009-04-28 12 views
0

Ich habe ein WebBrowser-Steuerelement mit einem transparenten Bedienfeld über dem oberen Bereich, was ich versuche, ein Rechteck auf dem transparenten Bedienfeld um das Element auf der Seite der Maus zu zeichnen schweben über.Löschen der Grafiken eines transparenten Bedienfelds C#

Bis jetzt habe ich alles funktioniert, außer das Panel wird nicht gelöscht, bevor das nächste Rechteck gezeichnet wird, so dass ich mit Rechtecken überall enden.

heres den Code Im using.

paneGraphics = drawingPane.CreateGraphics(); 

Rectangle inspectorRectangle; 

inspectorRectangle = controller.inspectElement(); 

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

drawingPane.Invalidate(); 

Ich habe versucht mit drawingPane.clear(), aber das macht nur den Bildschirm weiß.

Antwort

0

Haben Sie versucht:

graphics.Clear(Color.Transparent); 
+0

Ich habe das Projekt Openpandora versucht graphics.clear (Color.Transparent); graphics.clear (Farbe.Empty); und graphics.clear (Farbe.Weiß); Weiß war dem, was ich möchte, am nächsten, da es alles löscht und das eine Rechteck an der richtigen Stelle zeichnet, aber das Panel ist nicht mehr transparent. – Morgeh

2

Werfen Sie einen Blick auf die 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 
    } 
} 
Verwandte Themen