Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QGraphicscene中的图像在缩放到32767像素以上时消失_C++_Qt_Graphics - Fatal编程技术网

C++ QGraphicscene中的图像在缩放到32767像素以上时消失

C++ QGraphicscene中的图像在缩放到32767像素以上时消失,c++,qt,graphics,C++,Qt,Graphics,我在QGraphicsView中有一个QGraphicscene,它显示一个缩放的pixmap。出于某种原因,当pixmap大于int类型的32767像素最大值时,它根本无法显示,有时甚至部分显示 QT5的QGraphicsView文档说明: 请注意,尽管场景支持几乎无限的大小,但滚动条的范围永远不会超过整数INT_MIN、INT_MAX的范围 但是,我应该能够显示大于32767像素的pixmap,因为在我的系统上INT_MIN=-2147483648,INT_MAX=2147483647。当p

我在QGraphicsView中有一个QGraphicscene,它显示一个缩放的pixmap。出于某种原因,当pixmap大于int类型的32767像素最大值时,它根本无法显示,有时甚至部分显示

QT5的QGraphicsView文档说明:

请注意,尽管场景支持几乎无限的大小,但滚动条的范围永远不会超过整数INT_MIN、INT_MAX的范围

但是,我应该能够显示大于32767像素的pixmap,因为在我的系统上INT_MIN=-2147483648,INT_MAX=2147483647。当pixmap在一维中大于32767像素时,是什么导致它不显示?只要低于32767像素,图像就会正确显示。代码如下

// 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,因此我确定它们的值。

32767对于默认签名的C/C++类型SHORT也恰好是SHORT_MAX。您确定您的代码没有在某个地方使用短类型,并且您的CPU目标是什么?英特尔?臂在你的例子中,矩阵的值是多少?一些GDI函数受到短整数的限制。。。例如,椭圆的半轴乘法不能大于32767。。。暗示GDI对其他东西也使用16位整数。。。