WPF Custom Panel / Создание элемента управления - "Пончик" - PullRequest
8 голосов
/ 25 ноября 2010

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

По сути, цель состоит в том, чтобы иметь элемент управления, которому вы можете дать список объектов, и он поместит каждый из этих объектов в кнопку. Подвох в том, что кнопки должны быть расположены по кругу, как пончик. Аналогично изображению ниже.

The Doughnut Chart

Но теперь представьте, если можете, что каждый из этих цветных участков был кнопкой. У них также будет вся функциональность кнопок, например, указатели мыши и события.

Итак, основной вопрос в следующем: Какие методы я должен смотреть, чтобы создать этот вид контроля? Есть ли способ сделать какое-то преобразование "кривизны" на кнопке?

Похоже, я здесь ищу две разные вещи, верно?

Я имею в виду, я мог бы поместить каждый элемент в списке в ItemsControl, у которого кнопка была в качестве ItemTemplate. Так что все, что мне нужно, это две вещи:

Первая из которых - это панель с радиальной компоновкой (я видел несколько таких вокруг).

Второй способ заключается в том, чтобы каждая кнопка имела своего рода преобразование вращения и кривизны.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 25 ноября 2010

Я думаю, вы смотрите на три разных шага:

  1. A Panel, который раскладывает детей по кругу. Важно отметить, что панель должна обновлять вложенные свойства зависимостей только для чтения для своих дочерних элементов, сообщая им, где они были расположены (начальная позиция в градусах и конечная позиция в градусах)
  2. Шаблон Button, который визуализируется в форме дуги в соответствии с некоторыми начальными и конечными позициями.
  3. Объединение двух, привязка начального и конечного положений кнопок к прикрепленным значениям, отображаемым на панели.
0 голосов
/ 08 марта 2011

Другой подход (хотя и схожий) для решения той же проблемы, что и у нас, заключается в использовании панели для размещения каждой «кнопки» друг над другом. Каждая кнопка имеет форму, основанную на расчетах 2 воображаемых кругов, внутреннего и внешнего. Затем они смещаются на координаты x, y в правильные положения, так что их исходные положения становятся центральной точкой пончика. Самая сложная часть - это, очевидно, проработка всех этих тригонометрических вычислений, но однажды вы можете просто повернуть, пролистать, развернуть и т. Д. Нужную вам форму.

...