PDA

View Full Version : Processing huge QPainterPath



exi
5th April 2017, 14:59
Hello everyone, I hope someone can help me with my problem.

I try to render a huge QPainterPath (The PainterPath was created from an parsed File). I render everything on an QOpenGLWidget via QPainter. I have the problem, if the QPainterPath exceeds an certain complexity the QPainter start blocking the GUI. I tried "caching" as QPixmap or QImage (And still trying on this) but didn't got a usable result (Transparency gets lost).

I can provide some simplified code of what I'm trying to do, but my first question is: Is there any other method of caching the QPainter or having a QThread rendering that part?

Thankyou ~!


Edit: I found out what the transparency-Problem triggers: if the QPixmap drawn via QPainter::drawPixmap is wider an higher than the QWidget transparency isn't rendered anymore. Is that a known problem or limitation I didn't found?

exi
6th April 2017, 07:59
Hi,

The transparency gets lost as soon height + width of the pixmap is greater then 8192px. Again, I can't find anything that describes that limitation but also found out getting to this limit also brings back the problem I liked to solve this way. So, back to the question: How to cache a Painter Path?

Right now I have something like that, but with an more complex QPainterPath:
12432
Every refresh would block the whole GUI.