如何在画布上维护2d对象?如何将点击映射到对象?

时间:2012-11-21 09:18:42

标签: java data-structures drawing 2d

我需要在java(矩形,类似窗口)的画布上绘制一些2D对象

主要目标是将2D坐标映射到对象,例如识别点击了哪个对象。

问题:
维护2D对象大小/位置的常用方法是什么。 (哪些数据结构等)
应该有一种有效的方式来说明,哪个对象位于坐标x,y

2 个答案:

答案 0 :(得分:1)

通常,您在此处使用“分而治之”策略:您的视图(矩形)包含对该视图中视图的引用,而不是将所有视图放在一个大数组中。然后从左到右排序它们,您可以应用递归二进制搜索来查找您要点击的视图。

不知道如何在Java中这样做,但C ++中一个非常简单的类定义是:

class MyView {
    std::vector<MyView*> subviews;
    int x;
    int y;
    int width;
    int height;
};

搜索您单击的视图非常简单快捷。

答案 1 :(得分:0)

我在寻找什么 - 是Quadtree 对于不那么复杂的结构,Array会这样做。