Ich habe eine C++/CLI System::Windows::Forms::UserControl
abgeleitete Kontrolle, die nur einen kleinen Teil von sich selbst neu zeichnen sollte, wie neue Daten in es eingezogen werden. Aus irgendeinem Grund wird der OnPaint-Mechanismus auch dann aufgerufen, wenn nichts außerhalb der App geschieht.Wie kann ich verhindern, dass System :: Windows :: Forms :: UserControl den Hintergrund löscht?
Hier ist ein Ausschnitt:
void Spectrogram::OnPaint(System::Windows::Forms::PaintEventArgs ^e)
{
// Overidden to stop the background being painted(?)
}
void Spectrogram::AddNewFFTData(float* data, int fataWidth)
{
Graphics^ gfx = CreateGraphics();
//now do some drawing
gfx->Dispose();
}
So nenne ich das Add-Daten Methode einige neue Daten hinzufügen, die über den vorherigen Eintrag in der Theorie Schreib sollte (die eine gewisse Markierung löscht) und den neuen Eintrag schreiben.
Damals habe ich MFC/OpenGL-Apps entwickelt und eines der ersten Dinge, die ich tun würde, wäre, die OnEraseBackground
Methode zu überschreiben. Soweit ich das beurteilen kann, gibt es keinen offensichtlichen Weg, die Löschung zu stoppen. Was habe ich verpasst?
+1: Das ist exzellent - genau das, was ich gesucht habe. –
Eine Sache noch zu erinnern; stellen Sie sicher, dass Sie Double-Buffering deaktiviert haben, oder die Puffer werden gelegentlich alles austauschen und löschen. –
Oh, und es wurde die gesamte Kontrolle ungültig gemacht. –