Qt可以在屏幕上绘制多少条线?

Qt可以在屏幕上绘制多少条线?,qt,Qt,我目前正在开发一个Qt应用程序来绘制地图。我正在尝试绘制400000多条线,在使用~2GB后它崩溃了,但我的机器上仍有内存。我想知道我是否达到了导致问题的Qt内部的某个极限。有人知道你能画的东西的数量有没有限制,或者你能不能改变这个限制 如果它是有用的,我在C++中用一个具有一个成员函数的类来画线。代码大致如下 QPointF fromPoint; QPointF toPoint; fromPoint = foo( x ); toPoint = foo( y ); m_Painter.drawL

我目前正在开发一个Qt应用程序来绘制地图。我正在尝试绘制400000多条线,在使用~2GB后它崩溃了,但我的机器上仍有内存。我想知道我是否达到了导致问题的Qt内部的某个极限。有人知道你能画的东西的数量有没有限制,或者你能不能改变这个限制

<>如果它是有用的,我在C++中用一个具有一个成员函数的类来画线。代码大致如下

QPointF fromPoint;
QPointF toPoint;
fromPoint = foo( x );
toPoint = foo( y );
m_Painter.drawLine(fromPoint, toPoint );

//m_Painter is a QPainter

编辑:原来问题出在代码的其他地方。这与正在进行的自定义缓存有关。尽管我仍然对Qt能画多少条线有兴趣。有人知道吗?

QPainter通过执行其底层图形,它有几个实现(如、或)

有些设备是光栅…可能会将每条线绘制到图像缓冲区中,并在绘制完成后丢弃端点。在这种情况下,你可以画的线的数量应该没有限制

如果目标设备是OpenGL,或者是正在执行类似PostScript的输出的打印机,那么特定绘制引擎的限制很可能是一个因素。你得看看具体的那个

例如:如果跟踪drawLine的X11实现,您将看到它通过
drawPolygon()
向下通过
strokePolygon\u dev()
…并在调用以下命令时触底:

所以这里有另一个抽象层…所以问题变成了XWindows显示参数是否保证为光栅。(我猜是的。)


无论如何,答案是“如果光栅不受限制。可能取决于其他方面——但限制(如果有)可能来自绘画引擎的底层设备,而不是Qt。”

2GB看起来像是一个过程的32位限制。你是在用32位编译windows吗?不,我是在64位机器上你是在64位机器上,还是在编译64位进程?这完全不同…非常好的观点。我不确定,但看起来我是为win32I编译的。我想知道屏幕上有400000行,它会是什么地图?也许你必须只画可见的线,而不是整个地图?因此,通过这种方式,您可以节省内存并加快应用程序的速度。
XDrawLines(dpy, hd, gc, pts, numberPoints, CoordModeOrigin);