Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Horizontal scrollbare Grafik (https://www.delphipraxis.net/73535-horizontal-scrollbare-grafik.html)

forum-flo 19. Jul 2006 14:14


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:

himitsu 19. Jul 2006 14:46

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 ^^

forum-flo 19. Jul 2006 15:38

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.

jokerfacehro 19. Jul 2006 15:45

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 !

himitsu 19. Jul 2006 15:47

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).

jokerfacehro 19. Jul 2006 15:51

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 ;)

forum-flo 19. Jul 2006 17:42

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.

Ratte 19. Jul 2006 18:21

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

himitsu 20. Jul 2006 15:13

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 11:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz