Ich habe vorgeschlagen, dass JMP mit Anzeigeelementen auf die gleiche Weise umgeht wie jedes andere GUI-Framework – kein Element neu zeichnen, es sei denn, der Inhalt hat sich geändert oder eine bestimmte Methode zum Neuzeichnen (oder Inval) wird aufgerufen.
Konkret kann es bitte eine Möglichkeit sein, Frameboxen daran zu hindern, den Inhalt neu zu zeichnen (dazu gehört das Neuzeichnen aller Datenpunkte und das erneute Ausführen eines angehängten Skripts), wenn ein Fenster gescrollt wird?Zeichnen Sie wie im Ernst einmal und halten Sie die Bitmap (oder Pixmap) persistent, es sei denn, die Box wurde geändert (Größenänderung / dt RowState-Änderung / Inval-Methode).
Das ist ein wahnsinnig extrem Produktivitätseinbußen beim Scrollen durch Diagramme mit vielen Tausend Punkten oder komplexen angehängten Skripten.Die derzeitige Methode des „Neuzeichnens bei jeder möglichen Gelegenheit, egal was passiert“ ist äußerst verwirrend.
Hier ist ein Beispiel - das angehängte Skript druckt lediglich in das Protokoll, aber das Scrollen durch die Diagramme zeigt, wie es jedes Mal läuft, wenn das Bildlauffeld aktualisiert wird (geben Sie die <
New Window( "Test",
vlb = V List Box()
);
::global function = Function( {},
Print( 1 );
);
For( i = 1, i <= 20, i++,
vlb << Append(
Graph Box(
Frame Size( 200, 200 ),
X Scale( -100, 100 ),
Y Scale( -100, 100 ),
::global function
)
)
)