c++ - 关于 QGraphicsView 中图像平铺的问题

标签 c++ image qt qt4

这与我的其他问题之一有关。

如果我通过创建一个单独的 QGraphicsItem(将栅格数据作为其像素图)来平铺大图像,我如何跟踪 QGraphicsItem 在场景中的位置?显然,对于光栅数据,保持所有图 block “接触”以形成连续图像很重要,而且它们还必须位于正确的位置,这样图像看起来才不会困惑。

是否每个图 block 都必须有定位方法,使其相对于顶部/左侧/底部/右侧的邻居移动?这看起来有点笨拙。有没有更好的方法让它们一起移动?

换句话说,如果我用滚动条平移场景,或者拾取图像并在场景中四处拖动/移动它,我希望所有的图 block 也移动并保持在相对于彼此的正确位置。

控制布局、需要渲染哪些图 block (即只显示可见的图 block )以及仅在需要时填充数据的最佳方法是什么?此外,一旦渲染了一个图 block ,它的数据是否曾经被丢弃并从图像文件中重新填充,比如它是否在 View 之外停留了一段时间,然后如果有人平移到该部分,稍后又会回来?

最佳答案

有(超过)两种方法可以做到这一点:

  1. 使用 QGraphicsItemGroup 哪一个 处理您的磁贴项目的分组 为你。它移动、选择、更新 它是小组成员,就好像他们是 一。我从来没有用过它,但是从 医生,它似乎适用于典型的 应用程序。

  2. 自己在 一个自定义项目的 paint()。这个 让您完全控制如何 放置和绘制瓷砖,同时 项目真正作为一个项目,因为它 嗯,是一个项目。这就是我

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

相关文章:

c++ - 在 OpenCV 中将两个网络摄像头画面拼接在一起

C++如何通过派生类的实例访问 protected 基类方法

html - 使用 CSS 将图片替换为另一张图片

java - 如何使用MemoryImageSource扩展图像?

c++ - Qt 5.0.2 和 OpenGL 3+ 渲染问题

c++ - 使用WMI监控进程创建事件

c++ - 如何绘制 View ?

python - 如何将图像嵌入到 pandas DataFrame 并在 flask 网页中显示

c++ - Qt 忽略 const 说明符

python - 为什么QUndoStack.push()会执行QUndoCommand.redo()?