Элемент управления Label хорошо поддерживает прозрачность.Просто дизайнер не позволит вам правильно разместить этикетку.Элемент управления PictureBox не является контейнерным элементом управления, поэтому форма становится родительской для метки.Итак, вы видите фон формы.
Это легко исправить, добавив немного кода в конструктор формы.Вам нужно будет изменить свойство Parent метки и пересчитать его местоположение, поскольку теперь оно относится к графическому блоку, а не к форме.Например:
public Form1() {
InitializeComponent();
var pos = this.PointToScreen(label1.Location);
pos = pictureBox1.PointToClient(pos);
label1.Parent = pictureBox1;
label1.Location = pos;
label1.BackColor = Color.Transparent;
}
Во время выполнения выглядит примерно так:
Другой подход заключается в решении проблемы времени разработки.Это просто берет атрибут.Добавьте ссылку на System.Design и добавьте класс в свой проект, вставьте этот код:
using System.ComponentModel;
using System.Windows.Forms;
using System.Windows.Forms.Design; // Add reference to System.Design
[Designer(typeof(ParentControlDesigner))]
class PictureContainer : PictureBox {}