2009-04-28 10 views
0

J'ai un contrôle WebBrowser avec un panneau transparent sur le dessus, ce que je veux faire est de dessiner un rectangle sur le panneau transparent autour de l'élément dans la page que la souris est planant au-dessus. Jusqu'à présent, j'ai tout fonctionné, sauf que le panneau n'est pas effacé avant de dessiner le rectangle suivant, ce qui fait que je me retrouve avec des rectangles partout.Effacer les graphiques d'un panneau transparent C#

est le code que j'utilise. J'ai essayé d'utiliser drawingPane.clear() mais cela ne fait que rendre blanc l'écran.

Répondre

0

Avez-vous essayé:

graphics.Clear(Color.Transparent); 
+0

J'ai essayé de graphics.clear (Color.Transparent); graphics.clear (Color.Empty); et graphics.clear (Color.White); Le blanc était le plus proche de ce que je veux car il nettoie tout et dessine le rectangle au bon endroit mais le panneau n'est plus transparent. – Morgeh

2

Jetez un oeil à la code

de projet 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 
    } 
} 
Questions connexes