اگر توجه کرده باشین بعضی کنترل ها مانند لیبل حتی اگر backcolor آنها transparent باشد باز کاملا شفاف نمیشود و اگر فرم شما backgroundImage داشته باشد دقیقا به این موضوع پی خواهید برد.برای رفع این مشکل شما میتونید با استفاده از روشی که خواهیم گفت یک کنترل سفارشی از آن کنترل بسازید که کاملا شفاف است و هیچ مشکلی هم با backgroundImage ندارد.کافیست شما یک کلاس جدید بسازید و این کدها را بنویسید ما در مثال از Lable استفاده کردیم شما میتوانید به جای لیبل از کنترل های دیگری هم استفاده کنید.
using System.Windows.Forms;
namespace TransparentLabel
{
public class TransparentLabel : Label
{
public TransparentLabel()
{
this.SetStyle(ControlStyles.Opaque, true);
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);
}
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20; // Turn on WS_EX_TRANSPARENT
return parms;
}
}
}
}