C# - Transparent Form

2019-01-23 05:08发布

问题:

I currently have a Form with all the desired effects except one. The current form consists out of a menustrip at the top with a panel underneath which contains labels and pictureboxes. When the form is launched the menustrip is not visible, it only becomes visible while the user presses the 'Alt'-button and disappears in the same manner.

The panel will have a background-image with a transparent background (.PNG). This image will become the main layout of the form as I set the borderstyle to none. Now the problem is that the form still has the white/grayish background underneath the panel.

Now my question is how do I make the form transparent so the image on the panel becomes the main layout rather than just the image with the forms backcolor underneath it. I do not want to use the Opacity property as I want the panel to be visible 100%.

回答1:

Assuming WinForms.

You can do this, but you cannot make the edges semi-transparent.

Try this.

On the form, set the following properties:

BackColor = Color.Lime;
TransparencyKey = Color.Lime;

This will make the form transparent. Then set the backgroundimage:

BackgroundImage = myImage:

The parts of the backgroundimage that is also Color.Limewill also get transparent.

If you also want to get rid of the Forms borders, add this line as well:

FormBorderStyle = FormBorderStyle.None;


回答2:

Be careful when you will choosing backcolor. Chose a Backcolor to differ from your text, images, and any control's color that mean choose a color that you will never going to use in your Form and I think Fuchsia/ lime will be the best choice.For choosing a backcolor codes are below:

this.BackColor = Color.Fuchsia;

and then Make that color to Transparent by using that codes:

TransparencyKey = Color.Fuchsia;