semi-transparent form but opaque Controls in C#
How to make semi transparent form in C# windows form application
I have tried the TransparentKey
which makes it full-transparent. and tried Opacity
but it effects the whole form (with controls).
I want only form part to be semi开发者_Go百科-transparent but not Controls.
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);
}
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); }
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
精彩评论