3

我想创建一个具有时间线的程序,就像您在视频编辑器中看到的那样。放置在该时间线上的事件将具有开始时间和结束时间(或长度?)。可以自由地向前和向后移动时间线的播放头,甚至可以控制它的速度。重要的是,播放头应该在它“进入”或“退出”对象时触发事件,因为它在对象上移动。我不想使用计时器,因为可能会有很多这样的事件,而且效率可能很低。

查看此问题的最佳方法是什么?我已经对图形部分进行了编码(使用 QGraphicsView,其中使用自定义 QGraphicsItems 表示事件),现在我正在寻找实现后端的最佳方法。

我的问题有意义吗?是不是太模棱两可了?

4

1 回答 1

3

您似乎想要一个有效支持以下操作的数据结构:

  1. 插入和删除时间间隔。
  2. 移动一个时间间隔。
  3. 查询与某个时间重叠的所有时间间隔。

为此,您可能需要查看有效支持操作 (1) 和 (3)的区间树数据结构。您可以通过删除现有段然后将其重新插入间隔树来实现操作 (2)。

要实现读取指针,您可以连续查询与当前时间重叠的所有段的段树。

希望这可以帮助!

于 2013-01-06T22:45:16.333 回答