Hallo sicum,
... was ist das in "mouse move"
Ah jetzt verstehe ich das - ein bisschen Rube-Goldberg.
Dann mal weiter:
(1) du extrahierst die Daten etwas sehr umständlich. Gerd hatte schon mal den richtigen Weg aufgezeigt, auch wenn das noch etwas verfeinert werden sollte. Das bezieht sich aber nur auf die Indizes.
(1a) Dass der Cursor "Ende" nach dem Cursor "Anfang" liegt, dass stellt zwar schon der Algorithmus sicher, aber wer weis schon, was an komischen Effekten alles auftreten kann.
(1b) Außerdem sollten die extrahierten Daten immer innerhalb der Cursoren liegen.
Um beim Beispiel von Gerd zu bleiben: "Threshold 1D Array" ist schon der passende Weg. Nur sollte wegen (1a) der fractional index des ersten als Eingang für den zweiten Aufruf verwendet werden. Anschließend muss der erste fractional index aufgerundet und der zweite abgerundet werden. Durch die Rundung bekommst du nach der Subtraktion genau ein Element zu wenig. Du musst deshalb zur Länge noch eins addieren.
(jetzt habe ich schon zu viel zu viel verraten)
(2) Du extrahierst die Daten in "mouse move", zeigst sie aber erst in "mouse up" und "mouse leave".
Es macht keinen Sinn, bei jedem "mouse move" die Daten zu extrahieren, es sei denn du willst die extrahierten Daten sofort im Graph anzeigen. Letzteres kostet Zeit und bei vielen Daten im Graph ist das eher nicht so schön.
Extrahiere die Daten nur beim Ereignis "mouse up".
Was du bei "mouse leave" machst, ist dir überlassen, aber mach es nicht so kompliziert. Wenn der Benutzer mit der Maus den Bereich des Graphen verlässt, was will er damit? Doch kaum etwas sinnvolles. Du könntest z.B. die Cursor einfach ausblenden und den einen eventuell vorhandenen extrahierten Bereich löschen.