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 {}
ProgresBar
unter dem Etikett.Sie können einfach verwenden
label1.Parent = pictureBox1; label1.BackColor = Color.Transparent; // You can also set this in the designer, as stated by ElDoRado1239
quelle
Sie können Text mit TextRenderer zeichnen, der ihn ohne Hintergrund zeichnet:
private void pictureBox1_Paint(object sender, PaintEventArgs e) { TextRenderer.DrawText(e.Graphics, overallpercent.ToString("#0") + "%", this.Font, new Point(10, 10), Color.Red); }
Wenn sich der Gesamtprozentsatzwert ändert, aktualisieren Sie die imageBox:
Sie können auch Graphics.DrawString verwenden, aber TextRenderer.DrawText (mit GDI) ist schneller als DrawString (GDI +)
Schauen Sie sich hier auch eine andere Antwort und hier die DrawText-Referenz an
quelle
Für einfach für Ihr Design. Sie können Ihr Etikett in einem Panel platzieren. und Hintergrundbild des Panels einstellen ist das, was jedes Bild Sie wollen. Der festgelegte Etikettenhintergrund ist transparent
quelle
Nachdem ich die meisten der bereitgestellten Lösungen ohne Erfolg ausprobiert hatte, funktionierte Folgendes für mich:
quelle
Eine Möglichkeit, die für alles funktioniert, aber Sie müssen die Position, die Größe ändern, verschieben usw. verwenden, ist die Verwendung eines transparenten Formulars:
Form form = new Form(); form.FormBorderStyle = FormBorderStyle.None; form.BackColor = Color.Black; form.TransparencyKey = Color.Black; form.Owner = this; form.Controls.Add(new Label() { Text = "Hello", Left = 0, Top = 0, Font = new Font(FontFamily.GenericSerif, 20), ForeColor = Color.White }); form.Show();
quelle
Wenn Sie Visual Studio mit Windows Form verwenden, können Sie Beschriftungen oder anderen Elementen Transparenz hinzufügen , indem Sie sie mit System.Drawing hinzufügen . in Form1.Designer.cs Auf diese Weise steht Ihnen im Eigenschaftenfenster Transparenz zur Verfügung (unter Darstellung bei BackColor). Oder bearbeiten Sie einfach den Code in Designer.cs this.label1.BackColor = System.Drawing.Color.Transparent;
quelle