Laden...

Rat und Vorschläge für ein Zeitdiagramm

Erstellt von amozi vor 18 Jahren Letzter Beitrag vor 18 Jahren 2.196 Views
A
amozi Themenstarter:in
120 Beiträge seit 2005
vor 18 Jahren
Rat und Vorschläge für ein Zeitdiagramm

Hi C#'ler,

endlich ist das Ende meiner Diplomarbeit in Sicht und kann auf einen erfolgreichen Abschluss hoffen. Zur Zeit bin ich dort angelegt was eigentlich Sinn und Zweck der Arbeit ist d.h. grafische Darstellung der Daten die ich von einem Microcontroller ausgelesen habe.
Ich muss jetzt diese Daten auf eine Bitmap diskret einzeichnen. Objekte für Zeichenoperationen und sämtliche Fuktionen sind auch bekannt.

Ich bin momentan in der Meinung alle Daten, die ich in einem Puffer abgelegt habe, auch einzeichne d.h. jede Änderung des vertikal-Wertes bezogen auf den horizontal-Wert soll ersichtlich sein. Zum Beispeil wenn ich 1000 Wertepaare im Puffer habe will ich auch diese zeichnen und die x-Achse beim Erreichen des x-Clientbereiches nach links scrollen lassen. Aber die y-Achse bereitet mir bei dieser Überlegung ein Nachdenken. Nehmen wir an, ich habe einen Wertebereich von 0 bis 5000 (wobei sich dieser Wert nur ganzzahlig ändern kann) muss ich min. ein Pixel pro Wert haben (sogar bischen mehr) um die Änderung anzuzeigen, was bei größeren Wertebereichen nicht mehr möglich ist, alles auf eine Bitmap darzustellen. Gibt irgendwelche Möglichkeiten mehrere Bitmaps als eine Einheit aneinander zu legen damit ich auch auf die nächste Bitmap wenn ihre Größe nicht mehr ausreichen sollte? Natürlich werden diese Bitmaps später dann factorisiert (verkleinert) und in einem Pictubox angezeigt. Für detailiierte Betrachtungen im Offline-Modus sollen diese gezoomt werden können.

Am Anfang meiner Diplomarbeit hatte ich dieses Thema in diesem Forum auch angesprochen, wobei ich nach grobe Infos gebeten hatte. Aufgrund der Details habe ich ein neues Theme erstellt.

Ich würde mich freuen wenn ihr eure Meinungen zu meiner voraussichtlichen Vorgehensweise mitteilen würdet. Ob es so realisierbar ist oder nicht? Oder wie ihr vorgehen würdet?

Danke Amozi

Danke
amozi

A
amozi Themenstarter:in
120 Beiträge seit 2005
vor 18 Jahren

Hallo,

hat keine Vorschläge oder Ideen dazu.

Danke
amozi

_
416 Beiträge seit 2005
vor 18 Jahren

Hallo,

leider versteh ich dein Problem noch nicht ganz. Weißt du am Anfang noch nicht wie groß deine Werte sein werden? Im Prinzip könntest du ja auch die Grafik jedes mal neu zeichnen. 5000 Linien werden ja wohl kaum ewig dauern. Und dann könntest du immer so skalieren wie du es gerade brauchst. Also gezoomt oder nicht, usw. Zum speichern würde sich ein Vektorformat anbieten, z.b. SVG, denn selbst mit JPG-Komprimierung wäre ein 5000² Bild schon mächtig groß.

cu, tb

P
8 Beiträge seit 2005
vor 18 Jahren

Warum ist es ein Problem einfach ein so großes Bitmap anzulegen?


Bitmap img = new Bitmap(10000,10000);
Graphics g = Graphics.FromImage(img);
g.Clear(Color.HotPink);
g.FillRectangle(new SolidBrush(Color.Blue), 10, 10, 1000, 7500);	
img.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)+"\\img.bmp");

Dauert zwar etwas, aber ansonsten... 😉

A
amozi Themenstarter:in
120 Beiträge seit 2005
vor 18 Jahren

Zuerst mal danke für die Antworten.
Aber das Problem liegt daran, dass pro Messung auch der Wertebereich sich ändern kann(was man zum Glück vor der Messung den kennt). Das mit 5000 war nur ein Beispiel.
Es könnte also auch einen Wertebereich von 15000 vorliegen oder der Wertebereich von 5000 könnte auch float-Werte(mit 3-Stellen hinterm Komma) beinhalten. Dann ist man sehr schnell im Millionenbereich an Pixelanzahl.
Wie gesagt, dass ist vorerst nur eine Überlegung von mir wie ich das anpacken möchte. Ob es möglich ist kann ich nicht abschätzen. Deswegen wäre ich dankbar wenn ihr eure Lösungsvorschläge mitteilen würdet.

Danke

Danke
amozi

P
8 Beiträge seit 2005
vor 18 Jahren

Was hälst du von einem ständig dynamischen bildaufbau? Die Werte werden als Wertepaare im Speicher gehalten und erst wenn bekannt ist, welchen Ausschnitt der Benutzer sehen will, werden die entsprechenden Werte angezeigt. Dann hättest du immer Bildgrößen im Bereich von 800x600.

A
amozi Themenstarter:in
120 Beiträge seit 2005
vor 18 Jahren

Hi Praktikant,

danke für deine Anregungen. Ich habe mich dafür entschieden die Werte bevor ich sie zeichne zu faktorisieren und anschließend im Offline-Modus(wenn die Zeichnung gestoppt wird) den Bereich, den man besonders betrachten möchte, auf eine Bitmap mit tatsächlichen Werten neu zeichnet.
Aber ich habe noch über den Bildlauf eine Frage. Ist es möglich an eine PictureBox zwei Bitmaps hintereinander dranzuhängen d.h. wenn die erste Bitmap nach links fertig gescrollt wurde, das anschließend die zweite Bitmap zur Sicht kommt? Oder den Anfang der Bitmap mit dem Ende in der Picturebox verbindet, dass sozusagen eine Art Ringbitmap in der Picturebox entsteht?

Danke

Danke
amozi

P
8 Beiträge seit 2005
vor 18 Jahren

Du könntest ein Panel erstellen, auf dem 2 Pictureboxes liegen. Diese Panel übernimmt sehr komfortabel das scrollen. Damit müsste auch ein Ringpicture gehen (du müsstest eben rechtzeitig die pictureboxen verschieben. welches verhalten hat dann die scrollbar?)

A
amozi Themenstarter:in
120 Beiträge seit 2005
vor 18 Jahren

kann man von dieser Panel auch den Anzeigebereich bestimmen wie bei einer picturebox?

welches verhalten hat dann die scrollbar?

was meinst du damit?

Danke
amozi

P
8 Beiträge seit 2005
vor 18 Jahren

den anzeigebereich kann man bestimmt irgendwie festlegen.

wenn du ein panorama-picture hast, gibt es ja erstmal keinen linken und rechten rand. sowas ist aber für einen scrollbalken notwendig.