半透明形式但C#中的不透明控件

时间:2011-03-05 02:54:04

标签: c# winforms transparency

如何在C#windows窗体应用程序中制作半透明表单

我尝试了TransparentKey,使其完全透明。并尝试Opacity,但它会影响整个表单(带控件)。

我只希望表单部分是半透明的,而不是控件。

3 个答案:

答案 0 :(得分:8)

您可以使用具有特定百分比的hatch brush,例如:

    using System.Drawing.Drawing2D;

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        var hb = new HatchBrush(HatchStyle.Percent50, this.TransparencyKey);

        e.Graphics.FillRectangle(hb,this.DisplayRectangle);
    }

答案 1 :(得分:1)

有一种解决方案可以为 控件 (不是表单)添加半透明度:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // Apply opacity (0 to 255)
        panel1.BackColor = Color.FromArgb(25, panel1.BackColor);
    }

在Visual Studio中(仅在执行期间激活alpha)

enter image description here

在Windows 7上执行:

enter image description here

在旧的WIndows 2003服务器上执行:

enter image description here

来源:https://stackoverflow.com/a/4464161/1529139

答案 2 :(得分:1)

我发现了Hatch Brush怪诞,

而不是:

protected override void OnPaintBackground(PaintEventArgs e) {
  var hb = new HatchBrush(HatchStyle.Percent80, this.TransparencyKey);
  e.Graphics.FillRectangle(hb, this.DisplayRectangle);
}

我用过:

protected override void OnPaintBackground(PaintEventArgs e) {
  var sb = new SolidBrush(Color.FromArgb(100, 100, 100, 100));
  e.Graphics.FillRectangle(sb, this.DisplayRectangle);
}