Überschreiben Der OnPaint-Label?

Ich versuche das überschreiben der OnPaint-Methode eines Labels in meine eigene benutzerdefinierte Steuerung mit FillPath.

Hier ist mein code für das Steuerelement:

public partial class GlassLabel : Label
{
    public GlassLabel()
    {
        InitializeComponent();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        Graphics g = this.CreateGraphics();
        GraphicsPath path = new GraphicsPath();
        SolidBrush br = new SolidBrush(Color.Black);
        path.AddString("LLOOOOLL", new FontFamily("Microsoft Sans Serif"), (int)FontStyle.Regular, 12, new Point(55, 55), StringFormat.GenericDefault);
        g.SmoothingMode = SmoothingMode.HighQuality;
        g.FillPath(br, path);
    }
}

Wenn ich es ausführen, wird der text des Labels ist genau das gleiche, aber Sie nicht zeichnen sich mit FillPath.

Der Grund, warum ich versuche zu überschreiben, ist das label das ich verwenden möchte es an Aero glass, die Bedürfnisse FillPath. Wenn ich könnte drehen einer Grafik(die FillPath), ein Objekt, so kann ich die Ereignisse anfügen, um, ich möchte gerne Infos zu.

Dank.

Gerade versucht:

e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
        e.Graphics.FillPath(br, path);

Nicht funktioniert.

  • Versuchen Sie, mit dem Graphics-Objekt von der PaintEventArgs "e".
  • Legen Sie eine Pause und überprüfen Sie Ihren code ausgeführt wird. Auch versuchen Sie den Aufruf von base.OnPaint nur als eine vorübergehende Prüfung.
  • Es trifft die break-point, aber nichts zieht. Ich habe entfernt base.OnPaint es das label nicht zeichnen überhaupt.
  • Das ist einfach nicht gut unterstützt durch traditionelle Winforms-text-Zeichnung. Beste, was zu tun ist pinvoke DrawThemeTextEx() so können Sie die DTTSOPTS.iGlowSize zu erstellen, die milchig weißen hintergrund. Richten Sie Ihre browser auf google zu finden, das trifft auf diese keywords.
InformationsquelleAutor Tanner.R | 2012-03-13
Schreibe einen Kommentar