繁体   English   中英

QPixmap / QImage Windows的最大大小

[英]Maximum Size of QPixmap/QImage Windows

我有一个QGraphicsView用于非常广泛的QGraphicsScene。 我需要在drawBackground()中绘制背景,背景有些复杂(长循环),尽管它不需要不断地重新绘制。 我将其存储在函数drawBackground()内的静态QPixmap中(我也尝试过QImage),并且该pixmap是我绘制到视图画家上的东西。 仅在需要时才重新绘制QPixmap。

如果我不使用静态像素图,那么例如每次我横向滚动时,都会生成复杂的背景。 问题在于,Windows上的像素图显然有最大宽度,在我的计算机上是32770。我可以存储像素图列表并排绘制,但是这会使代码更丑陋,而且我也不知道该怎么做。像素图的最大宽度适用于每台Windows计算机。 由于这可能是一个众所周知的问题,我想知道是否有人有更好的解决方案。

谢谢。

您可以通过使用不加速的光栅绘制设备来避免窗口限制,但是32770 * 1024是100MiB的像素图; 即使Windows允许您,您也可能不想这样做。

您已经想到了通常的答案(将其分成更合理的大小并按需加载/生成)。 常见解决方案的另一部分是使用QPixmapCache之类的东西来保留最近使用的图块,这样您就不必过于频繁地重新生成它们(仅当用户滚动很远时才生成)。

您没有说复杂背景的复杂程度,但是您可能还想看一下Mandelbrot集示例,了解如何按需分段渲染(无限)大背景像素图而又不会阻塞UI。

这是平铺模式的常见用例。 基本上,您将背景分割成小图像。

我不确定您为什么会认为“这会使代码更丑陋”。 它当然不是一线之类的。 取决于您是否具有固定大小的背景图像,平铺代码通常非常简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM