Обсуждение статьи "DoEasy. Элементы управления (Часть 27): Продолжаем работу над WinForms-объектом "ProgressBar""

 

Опубликована статья DoEasy. Элементы управления (Часть 27): Продолжаем работу над WinForms-объектом "ProgressBar":

В статье продолжим разработку элемента управления ProgressBar. Создадим функционал для управления полосой прогресса и визуальными эффектами.

Скомпилируем и запустим советник на графике:


В первом цикле мы видим, как увеличивается ширина объекта ProgressBar и вслед за ним пропорционально увеличивается и ширина полосы прогресса. При этом значение Value изначально задано равным 50, и оно таким и остаётся, так как ширина полосы прогресса задаётся в относительных величинах.

Во втором цикле мы каждый раз вызываем метод PerformStep, который на каждом шаге увеличивает значение Value (относительное) на значение шага приращения. Хоть и выполняется 350 шагов приращения, но видно, что полоса прогресса увеличивается больше, чем на 1 пиксель за раз. Это происходит из-за того, что все величины относительны и расчитываются в процентном отношении к ширине ProgressBar. И это как раз нормально и правильно — невозможно приращать на каждом шаге по одному пикселю, если ширина ProgressBar равна 100 пикселей, а количество шагов 1000, то на один пиксель 10 шагов приращения получается. И они пропускаются при расчёте относительных величин.

По завершении цикла приращения полосы прогресса мы видим, как по ней пробегает блик каждые две секунды. Для демонстрации этого достаточно. Но для нормального вида — нет. Во-первых, блик должен пробегать по движущейся полосе прогресса, а не по завершённой, во-вторых — слишком простой "эффект" получился. Но всё это будем постепенно дорабатывать, исправлять и улучшать.

Автор: Artyom Trishkin

Причина обращения: