public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
// Change shape of Label control, removing transparent pixels.
label1.BackColor = Color.Transparent;
Bitmap bitmap = new Bitmap(label1.Width, label1.Height);
label1.DrawToBitmap(bitmap, label1.ClientRectangle);
Region region = new Region(label1.ClientRectangle);
for (int x = 0; x < label1.Width; x++) for (int y = 0; y < label1.Height; y++)
{
if (bitmap.GetPixel(x, y).A == 0)
{
region.Exclude(new Rectangle(x, y, 1, 1));
}
}
label1.Region = region;
}
}
1条答案
按热度按时间js5cn81o1#
WinForms控件显示为透明的原因是“透明Windows窗体控件的背景由其父控件绘制”,如MS documentation中所解释的,这是正确的。这意味着父控件的背景将被绘制到标签 * 中,即使在标签 * 之间有另一个控件(您提到的Web浏览器)。
补救方法是更改Label控件本身的 shape,方法是分配一个不包括透明像素的可绘制
Region
。