2014-09-14 4 views
2

У меня есть форму, как на изображении ниже.Как сделать фон метки прозрачным в C#

enter image description here

Я хочу видеть Label1 и LABEL3 через Метка2. (Я просто хочу видеть только границу метки2). Я изменил BackColor в label2 на Transparent. Но результат такой же, как и выше.

+0

Если предположить Winforms: Печальная правда состоит в том __This является не возможно .__ (Если вы не владеете - нарисуйте его - и даже тогда только для простых случаев, подобных вашим ..) – TaW

+0

http://stackoverflow.com/questions/25948454/how-to-set-background-color-to-transparent-for-a-richtextbox-in-c-sharp/25948758#25948758 –

ответ

3

В Windows Forms вы не можете сделать это напрямую. Вы можете работать с BackgroundImage.

Попробуйте это:

void TransparetBackground(Control C) 
{ 
    C.Visible = false; 

    C.Refresh(); 
    Application.DoEvents(); 

    Rectangle screenRectangle = RectangleToScreen(this.ClientRectangle); 
    int titleHeight = screenRectangle.Top - this.Top; 
    int Right = screenRectangle.Left - this.Left; 

    Bitmap bmp = new Bitmap(this.Width, this.Height); 
    this.DrawToBitmap(bmp, new Rectangle(0, 0, this.Width, this.Height)); 
    Bitmap bmpImage = new Bitmap(bmp); 
    bmp = bmpImage.Clone(new Rectangle(C.Location.X+Right, C.Location.Y + titleHeight, C.Width, C.Height), bmpImage.PixelFormat); 
    C.BackgroundImage = bmp; 

    C.Visible = true; 
} 

и в Form_Load:

private void Form1_Load(object sender, EventArgs e) 
{ 
    TransparetBackground(label2); 
} 

и вы можете увидеть этот результат:

enter image description here

Смежные вопросы