2012-02-29 9 views
0

ガラスボタンのためのいくつかの本当に素晴らしいコードはここにあります:http://www.lukesw.net/articles/GlassButton.aspxGlass Buttonがフォームのグラデーションを無視する方法を教えてください。

このボタンで、私が持っている唯一の問題は、私は自分のフォームにグラデーションを適用する場合、それは非常にどのような私ではありませんように、それはボタンの色に影響を与えることがあります設計時に選択しました。これを引き起こすフォームグラデーションを適用するために使用しているコードか、ボタンが完全に不透明でないかどうかは分かりません。私はボタンコードで少しばかげていたが、どこにも行かなかった。上記のリンクにあるボタンのコードを取得することができます。以下は、私が今、フォーム自体に配置され、私のフォーム勾配のために使用しているコードは次のとおりです。

private Color _Color1 = Color.Gainsboro; 
    private Color _Color2 = Color.Blue; 
    private float _ColorAngle = 60f; 

    public Color Color1 
    { 

     get { return _Color1; } 
     set { 
      _Color1 = value; 
      this.Invalidate(); // Tell the Form to repaint itself 
     } 
    } 

    public Color Color2 
    { 
     get { return _Color2; } 
     set { 
      _Color2 = value; 
      this.Invalidate(); // Tell the Form to repaint itself 
     } 
    } 

    public float ColorAngle 
    { 
     get { return _ColorAngle; } 
     set { 
      _ColorAngle = value; 
      this.Invalidate(); // Tell the Form to repaint itself 
     } 
    } 

    protected override void OnPaintBackground(PaintEventArgs pevent) 
    { 
     Graphics g = pevent.Graphics; 
     Rectangle rBackground = new Rectangle(0, 0, this.Width, this.Height); 

     System.Drawing.Drawing2D.LinearGradientBrush bBackground 
      = new System.Drawing.Drawing2D.LinearGradientBrush(rBackground, 
               _Color1, _Color2, _ColorAngle); 

     g.FillRectangle(bBackground, rBackground); 
     bBackground.Dispose(); 
    } 

それは設計時に同じように私は、実行時に同じを表示するには、このボタンを得ることができる方法上の任意のポインタ大変感謝しています! GlowButton.csDrawButtonBackground方法で

+0

それはボタンが完全に不透明ではないということです - あなたはそれを見ることができるので、それはガラスボタンと呼ばれています。 – Ryan

+0

@minitech確かに意味がありますが、ボタンコードを変更して不透明にすることを知りたがっています。私はそれが実際に見ているよりも光沢のある外観にもっと興味があります:/ –

+0

参考:私は明らかにこれに賞金を置くことはできませんが、私はそれを知っているので誰でもこれに答えることができますボタンとすべてのソースをd/lに移動する必要があるため、通常より多くの作業が必要です。 –

答えて

2

、ちょうど完全に不透明に不透明度を変更する(255):

#region " content " 
using (GraphicsPath bb = CreateRoundRectangle(rect, 2)) 
{ 
    //int opacity = pressed ? 0xcc : 0x7f; 
    int opacity = 255; 
    using (Brush br = new SolidBrush(Color.FromArgb(opacity, backColor))) 
    { 
     g.FillPath(br, bb); 
    } 
} 
#endregion 
+1

ああ...私は不透明度を255ではなく100に設定しようとしていました。ありがとう! –

関連する問題