Zeichnen unter QT
Verfasst: 10. Februar 2013 22:10
Hallo QT-Profis!
Ich programmiere des Spaßes wegen gerade eine Simulation - nix dolles.
Die Simulation sieht in der Theorie wie folgt aus: http://de.wikipedia.org/wiki/Wator
Das Grundgerüst steht soweit. Ich habe also bis jetzt die Initialisierung der Spielwelt implementiert.
Um zu Testen, ob es nach meinen Wünschen angeordnet wird, möchte ich die Spielwelt nun Visualisieren.
Das eigendliche Spielfeld habe ich in eine "Matrix", welche aus zwei verschachtelten Vectoren besteht, gespeichert.
Diese möchte ich nun mittels QT ausgeben.
Im Moment gebe ich das in QT wie folgt aus:
Durch die zwei Schleifen wird der ganze Spaß natürlich sehr langsam.
Meine Fragen nun an Euch:
1. Gibt es eine Möglichkeit die Zeichnung irgendwie im Speicher zu Berechnen und es im Anschluss an die Berechnung erst anzuzeigen?
2. Gibt es eine elegantere Variante sachen zu Zeichnen?
Vielen Dank im Voraus,
Grüße
MaX
Ich programmiere des Spaßes wegen gerade eine Simulation - nix dolles.
Die Simulation sieht in der Theorie wie folgt aus: http://de.wikipedia.org/wiki/Wator
Das Grundgerüst steht soweit. Ich habe also bis jetzt die Initialisierung der Spielwelt implementiert.
Um zu Testen, ob es nach meinen Wünschen angeordnet wird, möchte ich die Spielwelt nun Visualisieren.
Das eigendliche Spielfeld habe ich in eine "Matrix", welche aus zwei verschachtelten Vectoren besteht, gespeichert.
Diese möchte ich nun mittels QT ausgeben.
Im Moment gebe ich das in QT wie folgt aus:
Code: Alles auswählen
try
{
//Erstelle Painter
QPainter playingField(_pixMap);
playingField.setPen(*_freePan);
//Zähler für die Spielwelt
int counter_x = 0;
int counter_y = 0;
int fishCounter = 0;
int haiCounter = 0;
int freeCounter = 0;
//Zeichne Spielfeld
for (int x = 0; x < _playingField_x_width; x+=4) //x
{
//Setze zurück
counter_y = 0;
for (int y = 0; y < _playingField_y_height; y+=4) //y
{
//Paint individuum
switch (_worldWator->getIndividumType(counter_x, counter_y))
{
case 1: //Fisch
playingField.setPen(*_fishPan);
fishCounter++;
break;
case 2: //Hai
playingField.setPen(*_sharkPan);
haiCounter++;
break;
case 3: //Wasser | Leer
playingField.setPen(*_freePan);
freeCounter++;
break;
default: //fehler
playingField.setPen(Qt::white);
break;
}//end switch
playingField.drawPoint(x, y);
counter_y ++;
}//end for y
counter_x ++;
}//end for x
//Schließe Zeichnen ab
playingField.end();
ui->labelPlayingField->setPixmap(*_pixMap);
}//end try
catch (...)
{
}Meine Fragen nun an Euch:
1. Gibt es eine Möglichkeit die Zeichnung irgendwie im Speicher zu Berechnen und es im Anschluss an die Berechnung erst anzuzeigen?
2. Gibt es eine elegantere Variante sachen zu Zeichnen?
Vielen Dank im Voraus,
Grüße
MaX