2013-03-25 4 views
0

В настоящее время у меня есть программа, которая рисует перекрывающиеся прямоугольники и задавалась вопросом, есть ли простой способ определить, какая фигура находится сверху (наиболее видимая). Это меня насторожило, поскольку нет оси z для использования, как при работе в 3D.Как определить, какой прямоугольник сверху?

overlapping rectangles

Я попытался циклически прямоугольники и с помощью метода .Contains но он возвращает все прямоугольники под конкретный момент и не самый высокий уровень один.

Я также искал вокруг, но, возможно, я использую неправильные ключевые слова?

+1

Можете ли вы пояснить, что вы подразумеваете под «наиболее заметным»? Вы имеете в виду прямоугольник с наименьшим количеством областей, который перекрывается с другими прямоугольниками? – 2to1mux

+0

Предположительно, это последний, который вы оказываете – MadProgrammer

+0

http://imgur.com/o4irIJl В этом случае зеленый цвет извести находится на «верхнем». Не перекрывается другой квадрат? – Elliott

ответ

4

Обычно, когда люди делают картины кода они делают что-то вроде:

списка прямоугольников = ....

for (int i = 0; i < rectangles.size(); i++) 
    //paint the rectangle 

Так что, если вы хотите найти точку, чтобы определить, что Rectanle это в то вы должны использовать:

for (int i = rectangles.size() - 1; i >= 0; i--) 
{ 

    if (rectangles.get(i).contains(yourPoint)) 
    { 
     // do something 
     break; 
    } 
} 

Начиная с конца даст вам последний прямоугольник нарисованный, который означает, что он находится на вершине всех aother прямоугольников.

+0

Возможно, это объяснит немного лучше, чего я пытаюсь достичь? http://imgur.com/icjVomN У меня есть слушатель мыши, который работает по назначению и записывает, где пользователь нажал x и y на экране. Из этих советов, как я могу судить о том, что наверху? – Elliott

+0

Я дал вам ответ, просто убедитесь, что точка - это координаты панели, на которой вы нарисовали прямоугольники. – camickr

+0

Хорошо, попробуем спасибо. Извините, если этот вопрос натолкнулся как тупой, но это 4 утра: D – Elliott

Смежные вопросы