不完全确定这是否是最合适的社区但是..。
我正在寻找解决方案来计算菜单选项的位置,当选项的数量变化,以及每个选项的大小可能不同时(由于文本包装)。
我们当前的代码使用两个变量运行一个for循环,一个用于选项总数,另一个用于一次在屏幕上显示多少。位置被计算为startYposition + 0.038 * number of options already on screen,这对于单行条目很好,但是一旦考虑到可变高度,它就会变得很糟糕。
我可以知道一个选项的高度,通过渲染它,但不把它放在屏幕上立即。
对我如何处理这个问题有什么想法吗?
发布于 2020-07-10 01:13:38
将每个菜单项绘制到与您要选择的窗口大小相同的缓冲区中。除了当你画的项目,颜色整个可点击区域一种颜色。每可点击一种不同的颜色。进入像素并读取它的颜色,使用您的颜色地图点击可点击,以发现什么是点击。
这甚至适用于3d物体。
保持类似于可点击的r树的东西。R-树中有可点击的包围框.当给定项绘制(如菜单项)时,它会更新其边界框,可能会从树中完全添加/删除自身。当接收到单击时,查询r-树并找出可能单击的是谁。
如果你得到一个以上的结果,你可以通过寻找可见的对象,或者根据Z顺序进行排序,或者发明你自己的语义选择器,这样最明显的/下一个点击就可以得到焦点。
使用单空格字体。这将从审议中删除核化问题。
您应该能够确定每个字符的像素宽度,以及每行像素将给出一行换行之前的字符数。每个浏览器可能会出现一些问题,因为特定的div报告了800像素,但是行提前包装了20像素。不幸的是,必须对此进行调整。
交替地固定每行字符数,关闭行包装,并启用水平滚动。
https://softwareengineering.stackexchange.com/questions/412557
复制相似问题