semi-transparent form but opaque Controls in C#

后端 未结 3 503
無奈伤痛
無奈伤痛 2020-12-16 22:09

How to make semi transparent form in C# windows form application

I have tried the TransparentKey which makes it full-transparent. and tried Opacit

相关标签:
3条回答
  • 2020-12-16 22:35

    I found the Hatch Brush grotesque,

    Instead of:

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

    I used:

    protected override void OnPaintBackground(PaintEventArgs e) {
      var sb = new SolidBrush(Color.FromArgb(100, 100, 100, 100));
      e.Graphics.FillRectangle(sb, this.DisplayRectangle);
    }
    
    0 讨论(0)
  • 2020-12-16 22:39

    There is a solution which add semi-transparency to a Control (not Form) :

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
    
            // Apply opacity (0 to 255)
            panel1.BackColor = Color.FromArgb(25, panel1.BackColor);
        }
    

    In visual Studio : (alpha activated only during execution)

    Executed on Windows 7 :

    Executed on an old WIndows 2003 Server :

    Source : https://stackoverflow.com/a/4464161/1529139

    0 讨论(0)
  • 2020-12-16 22:47

    You can use a hatch brush with a certain percentage, for example:

        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);
        }
    
    0 讨论(0)
提交回复
热议问题