2010-11-24 4 views
8

Я надеюсь создать пользовательскую панель или элемент управления, который создает очень специфический тип элемента.WPF Custom Panel/Control Creation - «Donut»

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

The Doughnut Chart

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

Итак, нагрузка на главный вопрос: Какие методы я должен искать для создания такого управления? Есть ли способ сделать какую-то трансформацию «кривизны» на кнопке?

Кажется, что я ищу здесь две отдельные вещи, не так ли?

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

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

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

Любые идеи?

+0

Вы намерены иметь то, что обычно представляет собой прямоугольную кнопку, повернутую и деформированную в форму кругового сегмента, или вам просто нужен контейнер каждого элемента в этой форме, а затем содержать содержимое, отображаемое нормально (т.е. прямоугольное и не повернутый)? – 2010-11-24 21:57:04

+0

Я надеялся добиться поворотных и деформированных кнопок. Я считаю, что Кент изложил довольно красивое решение ниже, которое достигнет желаемого результата. – 2010-11-29 14:47:03

ответ

4

Я думаю, что вы смотрите на три различных этапа:

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

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

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

  • Нет связанных вопросов^_^