paintevent und scale

Alles rund um die Programmierung mit Qt
Antworten
sf
Beiträge: 3
Registriert: 31. Oktober 2005 13:08

paintevent und scale

Beitrag 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();

}
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag von Goos »

Dir kann keiner helfen, wenn du nicht faehig bist zu beschreiben was genau dein Problem ist ;)

Goos
sf
Beiträge: 3
Registriert: 31. Oktober 2005 13:08

Beitrag 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.
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag 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
sf
Beiträge: 3
Registriert: 31. Oktober 2005 13:08

Beitrag von sf »

1. QT4
2. Rand ist grün
Füllung gelb
(ist nur ein Beispiel)
Goos
Beiträge: 360
Registriert: 17. August 2004 10:10
Wohnort: Black Forest

Beitrag 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
Antworten