Das Label-Steuerelement unterstützt die Transparenz gut. Es ist nur so, dass der Designer Sie das Etikett nicht richtig platzieren lässt. Das PictureBox-Steuerelement ist kein Containersteuerelement, daher wird das Formular zum übergeordneten Element des Etiketts. Sie sehen also den Hintergrund des Formulars.
Es ist einfach zu beheben, indem dem Formularkonstruktor ein bisschen Code hinzugefügt wird. Sie müssen die Parent-Eigenschaft des Etiketts ändern und den Speicherort neu berechnen, da es sich jetzt relativ zum Bildfeld anstelle des Formulars befindet. So was:
public Form1() {
InitializeComponent();
var pos = this.PointToScreen(label1.Location);
pos = pictureBox1.PointToClient(pos);
label1.Parent = pictureBox1;
label1.Location = pos;
label1.BackColor = Color.Transparent;
}
Sieht zur Laufzeit so aus:
Ein anderer Ansatz besteht darin, das Problem der Entwurfszeit zu lösen. Das braucht nur ein Attribut. Fügen Sie einen Verweis auf System.Design hinzu und fügen Sie Ihrem Projekt eine Klasse hinzu. Fügen Sie diesen Code ein:
using System.ComponentModel;
using System.Windows.Forms;
using System.Windows.Forms.Design;
[Designer(typeof(ParentControlDesigner))]
class PictureContainer : PictureBox {}