Mit C++ und .net habe ich einen Strom von Daten, die ich als Bildlauf anzeigen möchte. Jedes Mal, wenn ich neue Daten erhalte, möchte ich sie als neue Zeile (128x1 Pixel) hinzufügen und den vorherigen Inhalt auf eine Seite scrollen.Wie schreibe ich in einen (Bitmap?) Image Buffer für schnellere GDI + Displays?
Mein erster Stich bei dem Problem umfasste das Rendern des gesamten Datensatzes jedes Mal, wenn ich eine neue Zeile bekam. Das hat funktioniert, war aber viel zu langsam, also denke ich, dass es sinnvoller wäre, in einen Puffer zu schreiben (eine Bitmap vielleicht?). Das Problem ist, dass ich nicht sehen kann, wie ich das tun kann; Graphic
Objekte können Sie ganz glücklich zeichnen, aber ich kann keinen offensichtlichen Weg sehen, meine Kontrolle zu einem Bitmap
Objekt als Puffer verwenden? Ebenso kann ich keine Möglichkeit sehen, auf eine Bitmap zu zeichnen, die ich dann auf den Bildschirm schreiben könnte.
Dies muss möglich sein, aber mein Google-foo hat mir bisher versagt ...
[Edit1] Nur um zu klären, sind die Daten ein Spektrogramm. Die folgende Abbildung zeigt die Art von Sache, die ich habe versucht zu erreichen:
Die Daten Ich bin kommt in Arrays von Schwimmern Plotten. Es gibt nichts zu begrenzen, wie viele ich bekomme, also möchte ich nur Daten vergessen, wie es von der Seite der Handlung abfällt.
Ich erben derzeit von einem System::Windows::Forms::UserControl
, aber könnte zu etwas anderem wechseln, wenn es eine bessere Alternative gibt?
Bedeutet das, dass das Bild jedes Mal wachsen muss, wenn ich neue Daten hinzufüge? –
Nein ... das ScrollWindow macht genau das, was Sie wollen. Es scrollt den vorhandenen Inhalt innerhalb eines Clipping-Bereichs - zum Beispiel das CPU-Diagramm im Task-Manager. –
Das klingt wie eine nette wy, was ich will, aber meine System :: Windows :: Forms :: UserControl abgeleitete Klasse scheint keine ScrollWindow-Funktion zu haben. Muss ich eine Bildlaufleiste hinzufügen oder eine andere Basisklasse verwenden? –