[geloest]Bug in void QPainter::drawPixmap ?

Alles rund um die Programmierung mit Qt
Antworten
Highspeedy
Beiträge: 9
Registriert: 15. April 2007 20:49

[geloest]Bug in void QPainter::drawPixmap ?

Beitrag von Highspeedy »

Hallo,

folgendes Problem bei

void QPainter::drawPixmap ( int x, int y, const QPixmap & pixmap, int sx, int sy, int sw, int sh )


void myWidget::paintEvent ( QPaintEvent * event )
{


QPainter m_painter (this);

m_painter.setRenderHint ( QPainter::Antialiasing, false );



setFixedSize (255,20);
// feste Groeße des Widget ist auch die Größe des Pixmaps


m_pixmap.load(":/images/picture.png");
// Pixmap laden


m_painter.drawPixmap(0,0,m_pixmap,0,0,0,20);
// Pixmap im Widget ausgeben/zeichnen

}

Problem : Pixmap wird komplett gezeichnet obwohl nach Dokumentation und sowie ich es verstehe eigentlich nur eine Linie von 0,0 nach 0,20 übrig bleiben dürfte.

Oder mache ich einen Gedankenfehler ?

Wer hat eine Idee oder kann helfen.

Danke

Gruß
Zuletzt geändert von Highspeedy am 30. Mai 2007 19:53, insgesamt 1-mal geändert.
Zandru
Beiträge: 84
Registriert: 29. Mai 2007 15:35

Beitrag von Zandru »

(sw, sh) specifies the size of the pixmap that is to be drawn. The default, (0, 0) (and negative) means all the way to the bottom-right of the pixmap.

probier mal:

m_painter.drawPixmap(0,0,m_pixmap,0,0,1,20);
Highspeedy
Beiträge: 9
Registriert: 15. April 2007 20:49

Beitrag von Highspeedy »

Hallo,

das funktioniert natürlich. Es bleibt halt dann eine Linie vom Pixmap stehen.

Aber genau das möchte ich (ohne Tricks) vermeiden.

Allerdings, wo in der Doku steht:

"The default, (0, 0) (and negative) means all the way to the bottom-right of the pixmap."

Bei QT4.2.3 steht:

.... (sx, sy) specifies the top-left point in pixmap that is to be drawn. The default is (0, 0).
(sw, sh) specifies the size of the pixmap that is to be drawn. The default, (-1, -1), means all the way to the bottom-right of the pixmap."
Zandru
Beiträge: 84
Registriert: 29. Mai 2007 15:35

Beitrag von Zandru »

was möchtest du denn nun? das garnichts gemalt wird?

den Fall würde ich dann halt extra abfangen und die Funktion nicht aufrufen.

anderseits schriebst du in deiner 1. Message: "und sowie ich es verstehe eigentlich nur eine Linie von 0,0 nach 0,20 übrig bleiben dürfte."

ist nicht genau das was man erreicht mit meinem Vorschlag?

Mein Zitat aus der Doku ist übrigens von 4.3 - ist also anzunehmen, dass es umformuliert wurde um es klarer zu machen. d.h. 0 und negativ bedeutet: alles malen.
Highspeedy
Beiträge: 9
Registriert: 15. April 2007 20:49

Beitrag von Highspeedy »

Ja richtig,

es soll je nach Parameter den ich der entsprechenden Funktion übergebe alles bis gar nichts gezeichnet werden.

Die Doku von 4.3 habe ich noch nicht gelesen, da warte ich bis es released wird.

Aber wenn es so ist wie du schreibst, dann wird mir nichts anderes übrig bleiben als diesen "Sonderfall" entsprechend abzufangen.

Ist auch ziemlich problemlos machbar, aber ich wollte eben diese Funktionalität so einfach und verständlich wie möglich erstellen/programmieren und bin eben dann über die an der Stelle etwas ungenaue Dokumentation von Trolltech gestolpert und habe dadurch an mir selber etwas gezweifelt .


Aber der Punkt ist ja dann in der Doku von 4.3 korrigiert worden.

Trotzdem Danke für die Unterstützung.
Antworten