GTK+

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GTK+

Beitrag von +Fuss+ » Do Jan 22, 2009 7:50 pm

in cairo.h gibt es da was, ich probier das Mal mit dem Hauptbild in der Tabelle

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GTK+

Beitrag von +Fuss+ » Fr Jan 23, 2009 4:30 pm

von wegen cairo.h:

Code: Alles auswählen

gtk_image_new_from_file("ball.jpg");
wegen Vorder- und Hintergrund:
War auch ganz leicht. Das was zuerst in die Tabelle kommt kommt in den Vordergrund. Also erst Ball und dann das Feld in die Tabelle.

Jetzt kommt das Problem mit dem Rechteck um den Ball, aber ich habe da schon eine Idee:
Gimp hat eben bei dem Bearbeiten von einem Bild gesagt, dass das Format .jpg keine Transparenz kennt. Also müsste ich nur ein anderes Format nehmen, und dann die Teile des Rechtecks Transparent machen, oder?

dann noch eine Frage an die GTK+ Spezies:
gibt es in GTK+ mehrere "Ebenen"???

MfG Fuss

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GTK+

Beitrag von +Fuss+ » Sa Jan 24, 2009 11:17 am

So, ich komme nicht weiter.

Das mit der Tabelle gibt nichts, weil ich den Ball ja verschieben können muss, wenn der Button geklickt wird.
Ich habe jetzt in dem Fenster eine Tabelle, in dem Mittleren Feld der Tabelle eine Box und in der Box habe ich das Bild von dem Fußballfeld, aber ich krieg den Fußball nicht da drauf und weiß auch nicht wie das gehen soll, dass sich der Ball bewegt.

Habt ihr da eine Idee?

MfG Fuss

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+

Beitrag von Xin » Sa Jan 24, 2009 11:57 am

+Fuss+ hat geschrieben:Habt ihr da eine Idee?
Ich würde das Spielfeld als feststehende Grafik im Hintergrund halten, sie kopieren und darauf den Ball draufkopieren.
Diese Grafik würde ich ins Widget geben.

Beim Update würde ich den Bereich, den der Ball überschrieben hat wieder aus der Originalgraphik holen, den Ball an die neue Position kopieren und die neue Grafik wieder an das Widget geben.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GTK+

Beitrag von +Fuss+ » Sa Jan 24, 2009 6:15 pm

Also so, dass bei jedem Spielzug eine neu Grafik erstellt und aus dem Zwischenspeicher angezeigt wird?

Ich probier das mal, ich glaube das ist viel leichter als der weg, den ich nehmen wollte.

Danke für den Tipp

MfG Fuss

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GTK+

Beitrag von +Fuss+ » Sa Jan 24, 2009 7:07 pm

Noch eine wichtige Frage:

Wenn ich diesen Code habe:

Code: Alles auswählen

 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK (reset), NULL);
...

void reset(GtkWidget *button)
{...}
Wie übergebe ich dann eine Variable und eine Box an die Funktion?

MfG Fuss

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: GTK+

Beitrag von Kerli » Sa Jan 24, 2009 7:41 pm

+Fuss+ hat geschrieben:

Code: Alles auswählen

 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK (reset), NULL);
...

void reset(GtkWidget *button)
{...}
Wie übergebe ich dann eine Variable und eine Box an die Funktion?
Gar nicht :) Das ist eine Callbackfunktion. Ihre Signatur ist durch GTK festgelegt - Du kannst sie also nicht ändern. Auf das betreffende Widget kannst du natürlich mit 'button' zugreifen. Alles andere musst du über globale Variablen bzw. Funkionen lösen.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GTK+

Beitrag von +Fuss+ » Sa Jan 24, 2009 8:48 pm

Das ist ja sche**e...

gibt es keine Anderen Callbacks, in denen das möglich ist?
Fällt jemandem noch eine andere Art ein, als ! Widget und 1 Variable Global anzulegen?

MfG Fuss

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: GTK+

Beitrag von Kerli » So Jan 25, 2009 12:35 am

+Fuss+ hat geschrieben:Das ist ja sche**e...
:P
+Fuss+ hat geschrieben:gibt es keine Anderen Callbacks, in denen das möglich ist?
Fällt jemandem noch eine andere Art ein, als ! Widget und 1 Variable Global anzulegen?
Nein, was ich weiß gibt es keine anderen Callbacks. Aber irgendwo hab ich gelesen, dass man sich auch eigene Widgets anlegen kann. Bei denen könnte man dann ja auch andere Variablen hinzufügen. Die Frage ist ob das das richtige für dein Problem ist...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: GTK+

Beitrag von +Fuss+ » So Jan 25, 2009 10:52 am

Also:
Ich habe jetzt für jeden Spielstand ein Bild. Jetzt soll ja bei klick auf einen Button von Bild eins zu Bild zwei gewechselt werden. Wenn ich auf einen anderen Button klicke soll wieder auf Bild eins gewechselt werden. Wenn ich nochmal auf diesen Button klicke wird auf Bild 0 gewechselt und so weiter.

Jetzt brauche ich ja in den Funktionen eine Variable, die sich den Spielstand merkt (Global, weil ich sie ja in zwe Funktion bei zwei Buttons brauche.)

Das Problem ist, dass ich das Bild nicht wechseln kann, weil ich 1. nicht weiß wie ich in der Funktion auf die Box zugreifen kann und 2. keine Möglichkeit finde, das alte Bild zu löschen.

MfG Fuss

Antworten