Частично заштрихованный круговой таймер в WPF - PullRequest
1 голос
/ 19 июля 2011

Где я могу начать рисовать анимированную геометрию в C #?Я хотел бы нарисовать своего рода таймер обратного отсчета, нарисовав частично заштрихованный круг.В начале круг будет полностью заштрихован, при 75% 3/4 круга будет закрашен, а при 0 полностью не заштрихован.Я действительно не знаю, с чего начать что-то подобное.

Если вы все еще не понимаете, что мне нужно, многие игры используют этот вид анимации, чтобы представить «время восстановления» предмета или навыка.Как секундная стрелка, вращающаяся вокруг часов, показывающая, что под ней.

WPF - это мое целевое приложение, но я думаю, мне нужно будет использовать какой-то GDI API.

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Вы можете начать с примеров чертежей здесь, чтобы узнать, как сделать ваш круговой рисунок:

http://www.codeproject.com/KB/WPF/PieChartDataBinding.aspx

Похоже, они используют StreamGeometryContext вместе с LineTo и ArcTo.

Затем вы можете применить анимацию к свойствам этого графического объекта, чтобы с течением времени «срез» увеличивался за счет изменения длины дуги:

http://msdn.microsoft.com/en-us/library/ms752312.aspx#applyanimationstoproperty

После этого вы можете красиво обернуть все это в UserControl с настраиваемыми свойствами зависимостей, чтобы вы могли повторно использовать это в своем приложении.

Редактировать : Я думал, вы имели в виду затененный пирог, как в World of Warcraft. То, что вы хотите, на самом деле проще. См. Ответ Пойразоглу о графическом подходе (хотя вам действительно нужен только верхний черный круг, если вы используете подход с непрозрачностью).

1 голос
/ 19 июля 2011

Да, с WPF это действительно легко.Просто создайте еще один круг поверх круга, сделайте его черным, и пусть таймер обновит непрозрачность верхнего круга с 1 до 0 по времени (или как вы захотите).

Это "легко" путь.Более «удобный» или «стиль в стиле WPF» будет включать в себя привязки и, возможно, преобразования значений, вы будете привязывать непрозрачность круга к пользовательскому значению с помощью преобразователя значений (или уменьшать это значение, в любом случае существует множествопути).

Выбирай что хочешь.Они оба будут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...