QPainter

Alles rund um die Programmierung mit Qt
Antworten
DBGTMaster
Beiträge: 190
Registriert: 19. August 2010 10:00

QPainter

Beitrag von DBGTMaster »

Hallo,

ich habe ein Widget, auf welchem ich zeichne:

Code: Alles auswählen

void DrawArea::paintEvent(QPaintEvent *event) {
    QPainter painter(this);

    painter.setBackgroundMode(Qt::OpaqueMode);
    painter.setBackground(QBrush( Qt::black ));

    painter.setPen(QPen(Qt::white));
    painter.setFont(QFont("Arial", 16, QFont::Bold));
    painter.drawText(10, 20, tr("Hello world!"));

    // Zeichenfläche schwarz umkasteln:
    painter.setPen(QPen(Qt::black));
    painter.drawRect(0, 0, this->size().rwidth() - 1, this->size().rheight() - 1);

    /**
      * Wenn das Zeichnen des Users aktiv ist, so auf den jeweiligen Mausposition einen
      * Punkt setzen:
      */
    if (_userBeginPainting) {

        // Welches Zeichengerät wird verwendet?
        switch (_paintDevice) {

            case pencel:
                /**
                  * Es wird mit dem Bleistift gezeichnet:
                  */
                painter.setPen(QPen(Qt::black));
                painter.drawPoint(_mousePosX, _mousePosY);
                painter.drawRect(0, 0, _mousePosX, _mousePosY);

                qDebug() << "Paint";
            break;
        }
    }

    painter.end();

    Q_UNUSED(event);
}
Das Problem an der Sache ist, dass bei jedem paintEvent, dass, was ich zuvor gezeichnet habe, immer wieder gelöscht wird...

Kann ich irgendwie verhindern, dass das, was ich zuvor gezeichet habe, gelöscht wird, sondern erhalten bleibt?

Bzw. wie gehe ich da am besten vor?

Danke!
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

- vielleicht ein qpixmap des bereits gezeichneten holen, in den Hintergrund packen und darauf malen?
- alle "Malungen" speichern (Stack/Queue) und alle neu malen dann das aktive gemale davor?
- nur in einem kleinen Teil des Widgets malen ("Ausschnitt") um aktuelle Mausposition rum?
- Mal nach ner Eigenschaft suchen die beim Malen nicht immer den Hintergrund mit der Hintergrundfarbe "löscht" sondern einfach fleissig draufmalt? http://doc.qt.nokia.com/4.6/qwidget.htm ... round-prop
- mal QPainterPath anschaun?
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Das mit dem nicht gelöschten Hintergrund gleich wieder vergessen, denn wenn man ein anderes Fenster darüber zieht, wird auch wieder gelöscht.
Antworten