Graphen in GTK



  • Hallo Leute,

    Ausgerechnet der Teil des englischen gkt tuts auf der site von gtk ist nicht vorhanden der beschreibt wie man Graphen zeichnen kann.

    Kann mir jmd kurz und in etwa sagen wie ich das mache/einen link zu einem tut nennen?

    Es wäre sehr wichtig, da ich schon lange suche und nix finde.
    Da ich nicht weiter weiss wende ich mich an dieses Forum.

    Danke im Voraus.



  • Das Programm gtk-demo (einfach mal gtk-demo in die konsole eingeben), das normalerweise bei GTK+ dabei ist, beinhaltet eine Demo "Drawing Area" und den Source Code dazu. Vielleicht hilft das.



  • gtk anfänger schrieb:

    Hallo Leute,

    Ausgerechnet der Teil des englischen gkt tuts auf der site von gtk ist nicht vorhanden der beschreibt wie man Graphen zeichnen kann.

    Kann mir jmd kurz und in etwa sagen wie ich das mache/einen link zu einem tut nennen?

    Es wäre sehr wichtig, da ich schon lange suche und nix finde.
    Da ich nicht weiter weiss wende ich mich an dieses Forum.

    Danke im Voraus.

    Ich verstehe Graphen als Funktionsgraphen wie f(x) = x*x + 2*x + 1.

    1.) Fenster erstellen
    2.) GtkDrawingArea reinpacken
    3.) Die GtkDrawingArea ist eine Widget-Struktur, darin enthalten ist ein GdkDrawable (GtkDrawingArea * da; da->window).
    4.) Unter GDK findest Du in der API (DrawingPrimitives) Möglichkeiten um Linien und Punkte zu malen.

    5.) Je mehr Du zeichnest, desto langweiliger wird das, weil es irrsinnig lange dauert, insbesondere, wenn neu gezeichnet
    werden muss, weil Du ein anderes Fenster darüber bewegst.
    Du legst eine Pixmap an, worin Du den aktuellen Stand des Graphen zwischenbufferst. Muss das Fenster neu gezeichnet
    werden, kopierst Du nur noch die Pixmap nach vorne.

    6.) Du bereitest die Grafik sehr schnell in einem eigenen Speicherbereich komplett ohne Gdk vor und kopierst sie mit
    gdk_draw_rgb_image in das PixMap und aktualisierst das Fenster. Schnell, komfortabel, verbrät aber gerne auch das
    eine oder andere MB mehr.

    Für die DrawingArea siehe Vorredner (gtk-demo). Ansonsten notfalls einfach nochmal fragen.



  • Hallo nochmal.

    Erst Mal vielen Dank für die Hilfe!

    Die Frage ist: Ist das auch dynamisch?

    Ich arbeite gerade an einer Funktion,die Funktionsgleichungen in die Form y=kx+d bringt und dann einsetzt um mehrere Punkte zu bekommen.

    Jetzt soll das Programm nachdem es die Punkte berechnet hat den Graphen mit diesen Punkten zeichnen.

    Geht das so wie ich das meine?

    Wenn n tut mir leid falls ich es zuerst falsch beschrieben habe.



  • Moin Moin!

    gtk-anfänger schrieb:

    Die Frage ist: Ist das auch dynamisch?

    Ich verstehe die Frage nicht wirklich!?

    Dynamisch sollten vorrangig Menschen sein, wenn Programme dynamisch werden und spontan andere Ergebnisse liefern, dann sprechen die meisten Menschen von Bugs 😉
    Aber dynamische Programme... das könnte von einem Marketing-Menschen kommen. 😉

    gtk-anfänger schrieb:

    Ich arbeite gerade an einer Funktion,die Funktionsgleichungen in die Form y=kx+d bringt und dann einsetzt um mehrere Punkte zu bekommen.

    Jetzt soll das Programm nachdem es die Punkte berechnet hat den Graphen mit diesen Punkten zeichnen.

    Also erzeugst Du erst ein Array, das Du mit x/y-Werten füllst und setzt dann für jede Koordinate eine Punkt!?

    Das heißt, dass Du zwei Teilprobleme hast: erstmal ein Array mit den Werten einer Funktion füllen und anschließend ein Array mit Koordinaten als Grafik auf dem Bildschirm ausgeben.
    Wenn ich das richtig verstehe...!?

    gtk-anfänger schrieb:

    Geht das so wie ich das meine?

    Offenbar hast Du viel Zeit, das zu programmieren, also fang doch einfach mal an. Üblicherweise gibt's nicht viel für den Alltagsprogrammierer, was 'nicht geht'. Es gibt vorrangig kompliziertere oder einfachere, langsamere oder schnellere Wege.

    In Deinem Fall - einer linearen Funktion - wäre der einfache und schnelle Weg zum Beispiel zu finden, wenn man einfach zwei Punkte zu berechnet und eine Linie dazwischen malst, statt mehrere Punkte zu berechnen. ^^

    Klingt etwas nach einer Art Hausaufgabe...?

    [...die in dem Fall sicher auf Funktionen höheren Grades erweitert wird, wo man als Lösung keine Linien mehr malen kann, sondern auf dem vorhandenem aufbauen soll...]

    Wenn ich das mit den zwei Teilproblemen richtig verstanden habe, kannst Du Dich an zwei unabhängige kleine Projekte machen und nach Belieben ausprobieren bis beide Teilprojekte für sich laufen.



  • Gibts den nirgends ein onlinetut ausser bei gtk.org???



  • user89 schrieb:

    Gibts den nirgends ein onlinetut ausser bei gtk.org???

    Nope. Einzig in den Maillisten gibt's noch ein paar Codefragmente zu erhaschen.

    MfG

    GPC


Log in to reply