Алгоритм рисования кнопок на с#
Есть дерево объектов,т.е. каждый єлемент в дереве – объект(id,title).
Структура показаны на приатаченой картинке.
Нужно разместить кнопки на шахматной доске для каждого элемента в определенной последовательности.
Изначально есть масив рутовых элементов (уровень 0):array{Node1,Node2,Node3..}
Есть функция в которую передается каждый рутовый элемент (например Node1 или Node2 ...).
В этой функции надо рисовать кнопки и если у этого элемента есть дети (возвращаются все дети следуещего уровня в виде масива) – снова ее вызывать и рисовать дальше.
Алгоритм рисования:
Сначала рисуется самая первая кнопка в верхнем левом углу для объекта c уровня 0 Node1 с текстом=title (Node1) и tag=id. Вокруг Node1 распологаются чайлды 1 уровня (Node11,Node12,Node13) начиная с верхней точки по часовой стрелке. Потом надо распологать чайлды 2 уровня вокруг чайлдов 1 уровня сверху вниз по часовой стрелке и т.д. Расположение чайлдов идет по уровням а не отношению чайлд-парент, т.е. 3 уровень включает чайлды элементов Node12 и Node13.
Также надо раскрашивать кнопки следующим образом:
1 рутовый элемент в массиве – красный цвет
2 рутовый эл-т – синий
3 рутовый – зеленый
4 рутовы – желтый
следующий начинается снова с красного.
Увеличение уровня на 1 вызывает изменений цвета на 10% светлее.
т.е. Node1 (уровень0) имеет синий (#000099), node11,nod12,node13 (уровень1) будут (#0000cc), node12_1,node12_2,node12_3,node13_1 ((уровень2)) будут (#0000ff)
Результат проекта – простое приложение (винформа) которая отображает кнопки по данному алгоритму.
Если что не ясно – могу уточнить.