检查自定义 UI 工具包鼠标悬停位置的有效方法

问题描述 投票:0回答:1

这个问题与任何特定语言无关,我只是问不同的算法。

我正在尝试从头开始为桌面应用程序制作自定义用户界面。它需要支持大量 UI 元素而不出现滞后,并且大多数元素都有悬停状态。这意味着需要有一种有效的方法来检查每次鼠标移动时悬停的内容(如果有的话)。我有一些想法,但它们都有缺陷,我不太确定该怎么做。

到目前为止我想出的最好的办法是存储当前悬停元素及其所有相邻元素的边界。如果鼠标离开元素的边界,它将检查它现在位于哪个相邻元素并将其设置为悬停元素(复制其边界并存储其相邻元素等)。一些邻居可能只是与其他空白空间和元素相邻的空白空间的矩形。我只是问,因为我不确定这是否是最好的解决方案。

(另外,如果有人很了解 Qt 和 GTK 等代码库,他们使用什么算法?)

algorithm user-interface desktop-application
1个回答
0
投票

一个困难可能是元素的形状复杂。但是您可以使用一个框进行第一次检查,然后检查它是否确实位于您的元素之上。

我要做的是为每个元素创建一个框,用这些框创建一个 BSP,以避免检查其中的每一个元素。对于所有匹配的框,检查光标真正所在的一个元素。当然,仅对具有悬停状态的元素执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.