Auf Pixmap malen

Alles rund um die Programmierung mit Qt
Antworten
Metty87
Beiträge: 12
Registriert: 11. Mai 2010 22:09

Auf Pixmap malen

Beitrag von Metty87 »

Hey,

meine bisherige Lösung auf ein QGraphicsView zu malen ist die folgende:

bei den entsprechenden mouseevents wird ein punkt so gezeichnet:

Code: Alles auswählen

   for (int i = x - (drawSize_ / 2); i < x + (drawSize_ / 2); i++)
      for (int j = y - (drawSize_ / 2); j < y + (drawSize_ / 2); j++)
      {
         drawImage_.setPixel(i,j, drawColor_.rgb());
      }
   *drawPixmap_ = QPixmap::fromImage( drawImage_ );
   drawPixmap_->setMask( drawPixmap_->createMaskFromColor( QColor(205,205,205).rgb(), Qt::MaskInColor ) );
   drawPixmapItem_->setPixmap( *drawPixmap_ );
das drawPixmapItem ist mit dem entsprechenden Scene verbunden

hier die deklarationen:

Code: Alles auswählen

      QGraphicsPixmapItem* drawPixmapItem_;
      QPixmap* drawPixmap_;
      QImage drawImage_;
      QColor drawColor_;
      int drawSize_;
das ganze klappt auch ansich, nur bei grossen bildern ist es logischer weise sehr langsam, da ja jedes mal alles neu geladen wird....

kann mir jemand zeigen wie das einfacher geht?

danke,
Metty
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du führst ja auch ziemlich aufwendige Berechnungen durch. Bearbeite immer alles als QImage. Und zeichne dieses mit dem QPainter (und zwar nur den geänderten Bereich) auf ein QWidget. Wie ich es dir schon vorgeschlagen hatte.
Curtis Newton
Beiträge: 122
Registriert: 11. Juni 2008 18:39

Beitrag von Curtis Newton »

Und nimm nicht setpixel, sondern scanline.

C.
Metty87
Beiträge: 12
Registriert: 11. Mai 2010 22:09

Beitrag von Metty87 »

ok, dann versuch ich das mal...
danke
Antworten