Seite 1 von 1

Auf Pixmap malen

Verfasst: 30. Juni 2010 23:15
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

Verfasst: 1. Juli 2010 06:14
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.

Verfasst: 1. Juli 2010 13:26
von Curtis Newton
Und nimm nicht setpixel, sondern scanline.

C.

Verfasst: 1. Juli 2010 13:51
von Metty87
ok, dann versuch ich das mal...
danke