2010-12-23 7 views
0

OS :: win xp sp3Howto Ernte Polygon (mit Poly-Bild füllen) aus QImage (Qt 4.6)

Qt :: 4.6

Ich arbeite an dem Puzzle-Spiel auf Qt-Framework und Hilfe benötigen.

Im Projekt ist das Hauptbild enthalten, das zu kleineren Teilen zerlegt werden muss (Polygone mit dazugehörigen Bildern). Also mache ich das Bild QImage image = QImage("someImage.jpg") und möchte mit etwas wie Bild auf diesem Objekt zuschneiden.

Ich überprüfte QImage, QPixmap ... Doku auf Nokia Website auf der Suche nach Mitglied func. ähnlich dem Zuschnitt aber Null gefunden.

Benötigen Referenz auf Klasse muss ich verwenden (#include <???>), um dieses Problem zu lösen, und dann werde ich Online-Doku erneut überprüfen.

+0

und Sie sollten lieber tag qt4 anstelle von qt4.6 – Raiv

Antwort

0

Sie können diese Mitglieder QImage verwenden

QImage copy (const QRect & rectangle = QRect()) const 
QImage copy (int x, int y, int width, int height) const 
+0

Das ist OK für Rechtecke, aber ich brauche Polygone. –

+0

hmmm ... dann können Sie QRegion verwenden, aber es gibt keine Methoden zum Extrahieren von Bildteilen. Einige hässliche Code wie Punkt-für-Punkt-Prüfung, wenn qregion Bildkoordinaten enthält, können geschrieben werden, wenn Sie nichts besseres finden ... – Raiv

+0

Ja, es scheint, dass es keine direkte Methode zum Extrahieren von Poly-Image aus Bild gibt.Es muss indirekt getan werden aber ich brauche einige Richtlinien für weitere Maßnahmen. –

0

Sie einen QPixmap verwenden sollte: Mit ihm können Sie kopieren Sie alle oder Teile des Originalbildes in Ihr Puzzle Teile. Indem Sie in diese Teile mit einer transparenten Farbe malen, können Sie die Außenseite Ihrer Polyongs unsichtbar machen. Oder Sie verwenden bitBlt (Qt 3 Support Member) mit QImage für den gleichen Effekt.

0

soll das Originalbild genannt A. Sie haben ein Polygon P. Sie möchten ein kleineres Bild B zu schaffen, die im Grunde ein „beschnittene“ von P. Hier sind die Schritte:

  • B. Erstellen Um die Größe zu kennen, verwenden Sie einfach QPolygonF :: boundingRect auf P.
  • Füllen Sie B mit transparenter Farbe oder welcher Hintergrundfarbe Sie haben möchten.
  • Erstellt ein neues QPainter die
  • Setzt den Maler Clip-Pfad zu P QPainter (Polygon Pfad umgewandelt werden können) auf B arbeitet, siehe :: setClipPath
  • A der Maler

Hinweis Zeichnet verwenden, Du könntest den Maler übersetzen, wenn das begrenzende Rechteck von P nicht im Ursprung ist.