Hallo, ich möchte mit GTK ein kleines Programm schreiben, das mir aus einem Satz Parameter jeweils einen graphisch als Kurve darstellt. Dabei soll über den Plot Menüpunkt der jeweilige Parametersatz ausgewählt werden Das mit dem Menu unter GTK funktioniert dank http://www.zetcode.com/tutorials/gtktutorial/menusandtoolbars/ auch, im dem angehängten Beispiel ist es zum Testen nur einen Menüpunkt. Die entsprechende Callback-Funktion wird aus dem Menü aufgerufen,soweit ist das in Ordnung Nur weiss ich nicht, wie ich in der entsprechende Callback Funktion Cairo beibringe, in das Fenster zu zeichenen. Das Tutorial http://zetcode.com/tutorials/cairographicstutorial/cairobackends/, bzw. http://zetcode.com/tutorials/cairographicstutorial/basicdrawing/ arbeitet aber immer mit on_expose_event, das nützt mir aber nichts, weil ich in Abhängigkeit von dem gewählten Menupunkt unterschiedliche Ausgaben haben möchte. Kann mir jemand einen Tipp geben, wie man das in GTK bewerkstelligt, über das Menu eine entsprechende Grafik zu erstellen?
Andreas F. schrieb: > Kann mir jemand einen Tipp geben, wie man das in GTK bewerkstelligt, > über das Menu eine entsprechende Grafik zu erstellen? Garnicht. Genau genommen geht es schon, jedoch ist beim nächsten Repaint alles wider weg, daher der falsche Ansatz. Du machst dir ein enum oder eine Variable, wie auch immer, in der Speicherst du was gezeichnet werden soll. enum { KURVE_1, ETWAS_ANDERES } Im menu callback weisst du einer Variable den Typ zu: typ = KURVE_1; und sagts GTK es soll neu gezeichnet werden gtk_widget_queue_draw_area(dein_widget); Im expose event zeichnest du dann deine Kurve. switch(type) { case KURVE_1: Zeichenn mit cairo... break; case ETWAS_ANDERES: Zeichenn mit cairo... break; } Der Expose event tritt öfters auf, z.B. wenn du die Grösse des Fensters änderst, minimierst etc. mfg Andreas
Hallo Andreas, das sieht jetzt prinzipiell gut aus, danke für die Hilfe.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.