Frage

Also, ich bin ziemlich vertraut mit Windows Forms-Entwicklung.

Ich versuche, eine „hey ich bin beschäftigt Dinge tun,“ Komponente, die nur um eine Form dreht. Ich mag diese Kontrolle vorübergehend sein und oben auf allen anderen Kontrollen zu ziehen. Die Klasse erbt direkt von Control.

Also ich habe dies im Konstruktor:

SetStyle(ControlStyles.Opaque, true);

und folgt aus:

protected override CreateParams CreateParams
{
    get
    {
        CreateParams parms = base.CreateParams;
        parms.ExStyle |= 0x20; 
        return parms;
    }
}

Was wird mir ein Steuerelement, das auf anderen Kontrollen ziehen wird.

Nun mein Problem ist folgendes. Ich repaint die Steuerung ein paar Mal pro Sekunde die appearane einer glatten Animation zu geben. Aber ich kann nicht herausfinden, wie man klar, was im vorhergehenden Rahmen gezogen wurde. Mit e.Graphics.Clear(Color.Transparent) in OnPaint dreht die gesamte Steuerung schwarz.

Gibt es eine Möglichkeit, nur den gezogenen Inhalt eine Steuer löschen?

Ich habe bemerkt, dass die die Steuer Ändern der Größe löscht den Hintergrund.

Dinge, die nicht funktionieren

  1. Übergeordnete OnPaintBackground nichts zu tun. Oder einfach nur telefonieren base.OnPaintBackground. Gleiche Ergebnisse.
War es hilfreich?

Lösung

Okay, fand ich die Lösung hier: http://www.bobpowell.net/transcontrols.htm

Die Eltern Kontrollen müssen tatsächlich um für ungültig erklärt werden, um den transparenten Hintergrund zu halten.

Andere Tipps

Sie müssen möglicherweise außer Kraft zu setzen OnPaintBackground, dass dieser Artikel präsentiert: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html

Sie müssen möglicherweise auch die Steuerung ungültig zu machen, wenn sie gelöscht werden muss OnPaintBackground zwingen, aufgerufen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top