Koordinatensystem zur Datendarstellung



  • Hallo,
    kann mir jemand sagen, wie ich am besten beginne, wenn ich ein Koordinatensystem zeichnen möchte? Ich will damit Daten darstellen, die als x/y-Koordinaten abgespeichert sind. Die Daten einlesen klappt schon, aber die Darstellung als Diagramm stellt für mich ein großes Problem dar.
    Ich habe bisher mit CDC einfach zwei Achsen (also einfach nur 2 Linien) eingefügt und dann meine Daten mit CClient gezeichnet. Aber wenn ich größere Daten als Grenzen meines Koordinatensystems habe, weiß ich nicht, wie ich das ganze anpassen soll... 😕
    Mit GDI sollte das eigentlich funktionieren, hat hier mal jemand gepostet, aber wie und wo man da ansetzt verstehe ich leider nicht ganz. 😞
    Wer kann mir helfen?

    Schon mal Danke

    Grüße
    Yvonne



  • Hallo,
    arbeite am besten mit einen Zoomfaktor. Wenn du z.B. also Werte > 1024 auf einer 1024er Auflösung darstellen willst, so mußt die Koordinaten vor der Ausgabe entsprechend umrechnen.

    als kleines Bsp:
    Du hast Werte, die bis 2000 gehen und willst diese auf einer 1024er Auflösung darstellen. Der Umrechnungsfaktor ist also 1024/2000 = 0,512. Mit diesem mußt du nun vor der Ausgabe den entsprechenden Wert multiplizieren:
    Als kleine Funktion:

    float Ausgabewert(float Wert, float Umrechnungsfaktor)
    {
        return Wert * Umrechnungsfaktor;
    }
    

    Vielleicht ist dies für dich ein kleiner Anreiz.



  • Hallo Burkhi,
    prinzipiell keine schlechte Idee, aber wie mache ich das Programm damit portierbar, bzw. wie kann ich die Auflösung auslesen, damit ich weiß, welchen Zoomfaktor ich verwenden muß?
    Oder habe ich da etwas falsch verstanden? 😕

    Grüße
    Yvonne



  • Die Größe des Fensters kannst Du per GetWindowRect ermitteln:

    CRect Rect;
        GetWindowRect(&Rect);
    


  • Dankeschön,
    ich gehe davon aus, dass man dann die Differenz der Eckpunkte bilden muß, um die Auflösung zu erhalten, oder gibt es dafür extra noch eine Funktion? 😉

    Ich habe noch ein weiteres Problem:
    Meine Daten werden genau verkehrt herum gezeichnet, die x-Achse liegt also ganz oben, nicht ganz unten. Kann man das irgendwie 'umkehren'? 😕

    Grüße
    Yvonne



  • Für alle, die evtl. ein ähnliches Problem haben, hier meine eigene Lösung:

    Die Höhe des Fensters bekommt man mit:
    hoehe = rect.Height();

    Um die Daten richtig herum darzustellen, muß man die Werte einfach von rect.Height(); abziehen also:

    y= hoehe - y;

    Grüße
    Yvonne


Anmelden zum Antworten