2009-07-29 4 views
0

タイトルバーをドラインしてフォームを移動し、マウスボタンを押したまま不透明度を100%にリセットすると、Winformの不透明度を50%に設定するにはどうすればよいですか?移動するときにフォームを部分的に透明にするにはどうすればよいですか?

+0

あなたはどの言語を使用していますか? – lmsasu

+0

@Imsasu:WinFormsは、.NETで使用されるフォームの非公式の名前です。 – Powerlord

答えて

2

は、ここでは、コードの例です:

public partial class Form1 : System.Windows.Forms.Form 
{ 
    private const long BUTTON_DOWN_CODE = 0xa1; 
    private const long BUTTON_UP_CODE = 0xa0; 
    private const long WM_MOVING = 0x216; 

    static bool left_button_down = false; 

    protected override void DefWndProc(ref System.Windows.Forms.Message m) 
    { 
     //Check the state of the Left Mouse Button 
     if ((long)m.Msg == BUTTON_DOWN_CODE) 
      left_button_down = true; 
     else if ((long)m.Msg == BUTTON_UP_CODE) 
      left_button_down = false; 

     if (left_button_down) 
     { 
      if ((long)m.Msg == WM_MOVING) 
      { 
       //Set the forms opacity to 50% if user is moving 
       if (this.Opacity != 0.5) 
        this.Opacity = 0.5; 
      } 
     } 

     else if (!left_button_down) 
      if (this.Opacity != 1.0) 
       this.Opacity = 1.0; 

     base.DefWndProc(ref m); 
    } 
} 
3

興味深いことに、あなたはそれがOnResizeBeginで行うも可能とOnResizeEndが上書きされます - これは、両方の移動や、フォームのサイズを変更するに適用されます。

不透明度を変更したいときは、移動するときのみで、サイズを変更しないときは、アレックスの答えが良い。

関連する問題