gpt4 book ai didi

c++ - 在 QGraphicsView 中平铺大型 QGraphicsItem

转载 作者:太空狗 更新时间:2023-10-29 23:19:53 25 4
gpt4 key购买 nike

我目前正在使用一个 QGraphicsItem,我正在加载一个像素图来显示一些光栅数据。我目前没有做任何平铺或任何类似的事情,但我已经覆盖了我的 QGraphicsItem,这样我就可以实现诸如在鼠标下缩放、跟踪我悬停的像素等功能。

我从磁盘中取出的文件大小为 1 - 2GB,我想找出一种更优化的方式来显示它们。对于初学者来说——如果我愿意的话,我似乎可以一次显示它们——因为我正在使用的 QImage (Qpixmap->QImage->QgraphicsItem) 似乎在超过 32,xxx(16 位)的任何像素索引处都失败了。

那么如果我想保持使用单个 QGraphicsItem,我应该如何在此处实现平铺?我不认为我想使用多个 QGraphicsItems 来保存显示的数据+要显示的相邻数据“大约”。这将需要我在有人将鼠标悬停并试图缩放单个图 block 时缩放它们,从而导致我也必须重新定位所有内容,对吗?我想这还需要了解从文件中准确获取哪些数据。

然而,我对想法持开放态度。我还认为以某种线程方式执行此操作会很好,这样即使尚未加载所有图 block ,用户也可以继续平移图像或缩放图像。

我查看了 40000 芯片演示,但我不确定这是否是我所追求的 - 看起来它基本上仍然像通常在场景中那样显示所有芯片,只是覆盖了 paint 方法以提供更少详细程度...还是我错过了有关该演示的某些内容?

最佳答案

处理这么大的图像会很困难也就不足为奇了。 Qt 并不是为此而设计的,并且由于特定的操作系统和内存管理方式可能还有其他影响因素。

您显然需要(或者至少应该使用)一种平铺机制。您的主要问题是您需要一种方法来访问您的图像数据,而不涉及使用 QImage(或 QPixmap)来加载整个内容并提供对该图像的访问数据,因为已经确定这失败了。

您可能需要找到一种方法(库)来将整个图像加载到内存中并允许您从中提取图像数据区域,或者仅从磁盘上的文件加载特定区域。当试图“缩小”图像的任何部分时,您还需要能够将非常大的区域调整为较低分辨率的部分。不幸的是,我从来没有像这样进行过图像处理,所以我不熟悉可用的库选项,Qt 可能无法直接帮助您。

然而,您可能会探索的一个选项是使用图像编辑包将您的大图像分解成更易于管理的 block 。那么也许类似于芯片演示的 QGraphicsView 解决方案会起作用。

关于c++ - 在 QGraphicsView 中平铺大型 QGraphicsItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6300083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com