![]() |
Zoom anpassen für ein 2D Koordinatensystem.
Mahlzeit !
Ich habe ein Problem, komme leider auf keine gute Lösung: Ich habe einen canvas. Auf diesen Canvas Zeichne ich Kerzen (Börse). Nun habe ich Werte aus einer csv Datei. Diese trage ich in den Canvas als Kerzen ein (Hoch- tief- close -open). Nun hat mein canvas 500 pixel in der Höhe. Wenn z.B. den Deutschen Aktien index lade und eine Kerze darstelle, so habe ich z.B. 13400-13550 = 150 Punkte = 150 pixel differenz. Sieht gut aus auf dem canvas. Wenn ich aber nun den Eur/CHF lade, so hat eine Kerze nur 1 Pixel. (Kurs = 1,07). Was ich nun machen muss ist : Je höher der Kurs desto kleiner der Zoom. Ich habe schon mit mehreren f(x) herumgedoktert, bekomme es aber nicht hin. Gegeben : Bei Kurs 1,50 soll der Zoom 9000 sein. Bei Kurs 13000 soll der Zoom 1 sein. Abstufungen :20 Der Zoom soll expotentiell nach unten gehen, aber bei 13000 bei 1 sein. Kurs : currency ( candle[0].candleprice[sopen]) zoom : currency Ich komme leider auf keine Lösung. Vielleicht gibt es ja ein Mathe und Programmier Genie, der das nicht als Problem sieht. |
AW: Zoom anpassen für ein 2D Koordinatensystem.
Versteht so keiner.
Hänge doch mal Bilder vom Ist-Zustand an und male dir mit Paint oder sonstwas das gewünschte Soll-Ergebnis dazu. |
AW: Zoom anpassen für ein 2D Koordinatensystem.
Im Prinzip brauchst du einen "dynamisch" Zoom Faktor, den du natürlich auch ein wenig beeinflussen kannst.
Das ganze sollte eigentlich über einen einfachen Dreisatz zu lösen sein. Natürlich ist es Besser evtl. die Y-Achse immer erstmal aufzurunden 13550 => 13600 107 => 110 500 Pixel : 13600 Y => 0,03676 Pixel/Y x 13550 Y => 498 Pixel 500 Pixel : 110 Y => 4,54545 Pixel/Y x 107 Y => 486 Pixel Damit legst du quasi den Maßstab für die Y-Achse dynamisch fest - ich würde dabei immer zusehen, dass du je nach Größenordnung von Y eben die Aufrundung entsprechend machst. Ich hoffe das hilft dir ein wenig - ich bin grad unterwegs, und kann jetzt keine komplette Pascal-Implementierung machen. Grüße aus Franken Daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz