![]() |
Horizontal scrollbare Grafik
Ich will eine Grafik - genauer gesagt eine Meßwertkurve in einem horizontal scrollbaren Bereich zeichnen. Es sollen Werte erfaßt werden und dann als Grafik angezeigt werden. Diese Linie soll dabei immer "länger" werden und durch den Benutzer später gescrollt werden können. Wie kann ich das machen?
Linien zeichen usw. lannich schon, nur soll keine permanente Neuzeichnung der ganzen Linie erfolgen und ich weiß auch nicht, in welchem Objekt ich eine Linie scrollbar machen kann. :gruebel: |
Re: Horizontal scrollbare Grafik
entweder du nimmst 'nen ScrollBalken und zeichnest selber (z.B. PaintBox und darunter die ScrollBar) ... je nach Position einen anderen Ausschnitt zeichnen.
oder einfach in ein TImage reinzeichen und dessen breite anpassen ... wenn man das ganze dann in 'ner ScrollBox, oder ähnlichem ablegt, kommen die ScrollBalken von ganz alleine ^^ |
Re: Horizontal scrollbare Grafik
OK, so weit habe ich das wohl verstanden. Jetzt ist es nur unschön, daß ich die Breite des TImage schon vorher sehr hoch ansetzten muß. Wie kann ich denn das zur Laufzeit anpassen. Also immer etwas breiter, als der Graph gerade ist. Mit .width geht das wohl zur Laufzeit nicht mehr. Ach ja: und schön wäre natürlich, wenn der Scrollbalken so weit rollt, daß die aktuell geschriebene Porsition immer sichtbar bleibt.
|
Re: Horizontal scrollbare Grafik
hi
schau mal bei freeware -> imageviewer da nutze ich ein TImage in einem extra TFrame so einfach ;) damit erledigt delphi alles von selbst und die Imagegröße kannst du jederzeit anpassen mit: img =TImage w= width h=height
Delphi-Quellcode:
img.stretch:=true;
img.Picture.Bitmap.Width:=w; img.Picture.Bitmap.Height:=h; img.Width:=w; img.Height:=h; peace Jokerface, immer zum Denken bereit ! |
Re: Horizontal scrollbare Grafik
in dem TImage sollte es auch irgendwo 'ne Kapslung von TBitMap geben (ich glaub die versteckt sich unter Picture ... wenn du damit arbeitest und dann von dem BitMap und dem Image das Width änderst, sollte es schon klappen.
Aber ständig die grafik zu vergrößern ist eigentlich nicht ganz praktisch und bei großen Bilder auch bestimmt nicht schnell. am besten kommst du wohl, wenn du es selber auf eine Paintbox zeichnest ... also immer nur den aktuellen Bereich zeichnen ... die anderen Werte irgendwo speichern, damit du auch mal andere Bereiche zeichnen kannst und dann halt einfach die grafik verschieben (also in dem bild alles nach ein/zwei Pixel nach links, rechts daneben den neuen Punkt und ddann nur nch das Max und erhähen und Position auf Max setzen (Letzteres bei der ScrollBar). |
Re: Horizontal scrollbare Grafik
hmm
ja am besten alles in nem offscreen bitmap speichern und nur den bereich anzeigen das wird wohl das beste sein ;) |
Re: Horizontal scrollbare Grafik
Vielen Dank schon mal
Mit TImage klappts eigentlich ganz gut. Nur noch eine Frage: Wie kann ich die maximale Breite ermitteln, die ich dem Ding zuweisen kann? Mal ist es viel und mal weniger. Beim Programmstart kommt dann EOutofRessources. Das müßte man doch vorher ermitteln können und irgendwie sicher machen, da ich eben gerne 5000000 Pixel und mehr hätte. |
Re: Horizontal scrollbare Grafik
Speichere deine werte in einem Array und erzeuge nur für den jeweils gewählten Bereich ein bitmap. So sparst du Speicher, da du nur die Basisinformationen und nicht die gesamte Pixelspalte speicherst. wie viel du im endeffekt genau speichern kannst lässt sich leider nicht so leicht bestimmen.
Ratte Juhuu, 300 Beiträge |
Re: Horizontal scrollbare Grafik
Du könntet aber notfalls noch das PixelFormat des BitMaps ändern, dann braucht es ja bekanntlich weniger platz.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 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