我在QGraphicsScene
内有QGraphicsView
,显示缩放的像素图。出于某种原因,当像素图大于32,767像素(类型int
的最大值)时,它根本无法显示或有时部分显示。
QT5的QGraphicsView
文档说:
请注意,尽管场景支持几乎无限大小,但滚动条的范围绝不会超出整数范围(INT_MIN,INT_MAX)。
但是,我应该能够在我的系统上显示大于32,767像素的像素图,因为INT_MIN = -2147483648,INT_MAX = 2147483647。什么可能导致pixmap在一维中大于32,767像素时不显示?只要它低于32,767像素,图像就会正常显示。代码如下。
// Transformation matrix
QMatrix matrix;
if(!time_vertical) {
matrix.scale(1, -1);
matrix.rotate(90);
}
matrix.scale(frequency_zoom, time_zoom);
// Create pixmap
pixmap.convertFromImage(*image);
pixmap = pixmap.transformed(matrix);
// Add pixmap to scene
scene->clear();
QGraphicsPixmapItem* item = scene->addPixmap(pixmap);
item->setPos(0, 0); // Set pixmap origin (0, 0) in scene coordinates
scene->setSceneRect(pixmap.rect());
更多信息:我在Ubuntu 14.04上使用了英特尔处理器。我在调试输出中打印了INT_MIN和INT_MAX,所以我确定它们的值。