C# How to draw vor den Objekten?
Wie ziehen Sie einen string, der sollte auf oben auf alles andere?
Jetzt in meinem panel habe ich einige Bedienelemente in Panel1.Controls. Also fügte ich diese zu der Paint-Methode:
Graphics g = Panel1.CreateGraphics();
g.DrawString("BUSTED", new Font("Arial", 20f), new SolidBrush(Color.Black), new PointF(50, 50));
Das problem ist, dass der text gedruckt ist hinter der Benutzer-Steuerelemente, so dass es nicht gesehen werden kann. (Wenn ich ändern Sie die position des Textes in der öffentlichkeit sein, es korrekt angezeigt wird).
Irgendwelche Ideen?
Ist dies nicht ein .NETTO-Problem und nicht ein C# - Problem? C# ist die Sprache. .NET ist das Framework.
Welche version von .NETZ verwenden Sie?
Ich bin mit .Net 3.5
Welche version von .NETZ verwenden Sie?
Ich bin mit .Net 3.5
InformationsquelleAutor Patrick | 2009-07-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle windows forms-Steuerelemente sind HWND-basierte, das heißt, Sie haben jeweils Ihre eigenen Fenster-handle und die z-Reihenfolge/Eltern-Kind-Steuerelemente bestimmt, welche clips was. Das panel paint-Ereignis ist die Malerei auf das panel-Steuerelement, aber die Steuerelemente des Bedienfelds Ausgabe wird abgeschnitten, indem alle untergeordneten Steuerelemente.
Transparenz funktioniert nicht richtig in windows forms. Wenn Sie etwas, um einen transparenten hintergrund haben, wird es in der Regel wind, der die form hintergrund durchscheinen, und Sie nicht die direkten Eltern.
Ich gearbeitet haben, um dies auf verschiedene Weise.
InformationsquelleAutor Michael A. McCloskey
Versuchen Sie, ein panel, dass alle Steuerelemente zeichnen. Das panel muss gesetzt werden, mit Transparenz.
Hier gibt ' s mehr info : Zeichnung auf der Oberseite von Steuerelementen in einem Fenster (C#, WinForms)
Ich habe versucht, die Schaffung eines transparenten panel: public class TransparentPanel : Panel { public TransparentPanel() { } protected override CreateParams CreateParams { get { CreateParams createParams = base.CreateParams; createParams.ExStyle |= 0x00000020; // WS_EX_TRANSPARENT zurück createParams; } } protected override void OnPaintBackground(PaintEventArgs e) { } } ist Doch alles nur verschwommen, wenn ich es anwenden.
Ich habe versucht deinen code und ich bekomme nicht die Unschärfe.
Ich versuchte dies: (Dies ist innerhalb der Paint-Methode von pnlCards (Panel)) TransparentPanel mPanel = new TransparentPanel(); mPanel.Links = pnlCards.Links; mPanel.Top = pnlCards.Top; mPanel.Breite = pnlCards.Breite; mPanel.Höhe = pnlCards.Höhe; g = mPanel.CreateGraphics(); g.DrawString("BUSTED", new Font("Arial", 20f), new SolidBrush(Color.Schwarz), new PointF(50, 50)); das.Controls.Add(mPanel); und ich bekam dieses Ergebnis: pafo.net/error.jpg> ich möchte so etwas wie: pafo.net/correct.jpg
InformationsquelleAutor Cédric Guillemette
Ich bin nicht sicher, es wird funktionieren, aber Sie könnten versuchen, SendToBack auf allen user-controls im panel, dann wird vielleicht der text zeigt an der Spitze.
BringToFront
auf die Kontrolle, die Sie wollen in front.InformationsquelleAutor SwDevMan81
was über OnPaint überschreiben in der Systemsteuerung, und schreiben Sie Ihre Zeichnung code NACH dem Basis-Lack?
InformationsquelleAutor nothrow