2009-04-28 17 views
0

透明なパネルを上に置いたWebブラウザコントロールを持っています。私がしようとしているのは、マウスがあるページの要素の周囲の透明パネルに四角形を描きます。ホバリング。透明パネルのグラフィックスをクリアするC#

これまでのところ、次の四角形を描画する前にパネルが消去されていないことを除いて、すべての機能が動作していますので、どこでも長方形になります。

heresコードを使用しています。

paneGraphics = drawingPane.CreateGraphics(); 

Rectangle inspectorRectangle; 

inspectorRectangle = controller.inspectElement(); 

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

drawingPane.Invalidate(); 

私はdrawingPane.clear()を使用しようとしましたが、画面を白くするだけです。

答えて

0

あなたがしようとしました:

graphics.Clear(Color.Transparent); 
+0

私が試してみましたgraphics.clear(Color.Transparent)を見てみましょう。 graphics.clear(Color.Empty);およびgraphics.clear(Color.White);白はすべてをクリアし、正しい場所に1つの長方形を描くので、私が望むものに最も近いものでしたが、パネルはもはや透明ではありません。 – Morgeh

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 
    } 
} 
関連する問題