6

winforms で透明な背景を見たことがありますか?

それは私の問題の解決策を提供しません。私は同じ方法を使用して透明性を達成しようとしています

    public Form1()
    {
        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        InitializeComponent();
        this.BackColor = Color.FromArgb(0, 0, 0, 0);
    }

ただし、これにより、透明ではなく灰色の背景が得られます。実際に透明な背景を取得するにはどうすればよいですか (透明キー ソリューションでは背景が透明にならないことに注意してください。255 未満のアルファ チャネルでペイントすると、実際の背景ではなく、設定されたフォームの背景色とブレンドされます)。画面の特定の領域にアルファ < 255 でペイントし、(フォームではなく) 背景とブレンドしたいと考えています。

4

4 に答える 4

19

私がずっと前に行った方法は、フォームの背景に使用されていない色を見つけて、それに透明度キーを設定することでした:

this.BackColor = Color.Magenta;
this.TransparencyKey = Color.Magenta;

他の方法は次のとおりです。

  • 背景画像を作成し、その透明領域を特定の色でペイントし、それを BackgroundImage の形式で設定してから、TransparencyKey をその色に設定します。
  • 空のメソッドで OnPaintBackground メソッドをオーバーライドしています。

[編集] マリオが述べているように、通常、キーのデフォルトの透明色はマゼンタです。

于 2013-01-14T00:09:37.883 に答える
2

これは、winform の背景を透明にする最良の方法です。

この直後:

public partial class frmTransparentBackcolor : Form
{
    public frmTransparentBackcolor()
    {
        InitializeComponent();
        //set the backcolor and transparencykey on same color.
        this.BackColor = Color.LimeGreen;
        this.TransparencyKey = Color.LimeGreen;
    }
    protected override void OnPaintBackground(PaintEventArgs e)
    {
        e.Graphics.FillRectangle(Brushes.LimeGreen, e.ClipRectangle);
    }
}

これが役立つことを願っています。

于 2015-08-04T05:58:05.633 に答える
0

この作品には絵を使用できます。画像の境界の色は赤です。次はこのコードを使用します

this.TransparencyKey = Color.Red;
于 2013-01-14T01:22:55.793 に答える
-1
public partial class TransprtScrcn : Form
    {
        public TransprtScrcn()
        {
            InitializeComponent();
            this.BackColor = Color.Red;
            this.TransparencyKey = Color.Red;
        }


        protected override void OnPaintBackground(PaintEventArgs e)
        {
            e.Graphics.FillRectangle(Brushes.Red, e.ClipRectangle);
        }
    }
}
于 2016-10-18T06:06:13.920 に答える