Seite 1 von 1

paintevent und scale

Verfasst: 31. Oktober 2005 13:26
von sf
Hallo,
ich habe ein Problem mit der scale Funktion des QPainters und
fillRect (siehe Beispiel).
Kann mir irgend jemand helfen. Danke

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

// works
painter.fillRect(this->rect(),QBrush(Qt::yellow));

// works
painter.save();
painter.scale(10.0,10.0);
painter.setPen(Qt::black);
painter.drawRect(10,10,30,30);
painter.restore();

// works
painter.save();
painter.scale(10.1,10.1);
painter.setPen(Qt::red);
painter.drawRect(10,10,30,30);
painter.restore();


// do not work --- the fillRect will not scale -- why ????
painter.save();
painter.scale(10.0,10.0);
painter.fillRect(10,10,30,30,QBrush(Qt::green));
painter.restore();

// works
painter.save();
painter.scale(10.1,10.1);
painter.fillRect(10,10,30,30,QBrush(Qt::blue));
painter.restore();

}

Verfasst: 7. November 2005 10:46
von Goos
Dir kann keiner helfen, wenn du nicht faehig bist zu beschreiben was genau dein Problem ist ;)

Goos

Verfasst: 7. November 2005 14:01
von sf
die funktion painter.fillRect funktioniert nur wenn painter.scale mit ungeraden
Werten aufgerufen wird. Bei geraden Werten wird die Füllung mit einer skalierung von 1 gezeichnet. Wenn man pen und brush setzt wird der Rand skaliert und die Füllung nicht.

Verfasst: 7. November 2005 14:43
von Goos
Dein Problem kann ich nicht nachvollziehen. Funktioniert bei mir einwandfrei (QT3).
In deinem Beispiel halte ich es allerdings fuer ungeschickt, wenn man zuerst den Rand zeichnet und den dann mit der Fuellung wieder uebermalt ;)

Goos

Verfasst: 7. November 2005 17:06
von sf
1. QT4
2. Rand ist grün
Füllung gelb
(ist nur ein Beispiel)

Verfasst: 8. November 2005 08:40
von Goos
QT4 haettest vielleicht gleich sagen sollen :)
Mag schon sein, dass es da nicht funktioniert. Wer QT4 benutzt sollte sich eh ueber nix wundern ;)

Goos