Вопрос

.NET новичок здесь ... Я хотел бы сделать кнопку в форме Windows, которая отображает прогресс или " время перезарядки " эффект. То есть, когда кнопка нажата, она становится отключенной. Когда происходит какое-то событие или таймер, кнопка отображает ход графически. Когда процесс завершится, рисунок завершится, и кнопка станет активной. Подобные эффекты можно увидеть во многих играх.

Я подумал об использовании комбинации встроенного класса Button и функции GDI + DrawPath, но сложность плохо масштабируется, и у меня возникает неприятное ощущение, что должен быть более простой способ.

Есть идеи? Спасибо.

Это было полезно?

Решение

Если вам действительно нужно, чтобы он был на кнопке, я бы пошел с настраиваемым событием рисования.

что-то похожее на:

button += new buttonPaintEvent(buttonPaintEventHandlerMethod);

Другие советы

Самый простой подход - создать экземпляр элемента управления индикатора выполнения, и вам не нужно выполнять какое-либо пользовательское кодирование / пользовательское рисование. Если вам действительно нужно отобразить все внутри кнопки управления, у вас есть два варианта. Вы можете продолжать изменять свойство изображения кнопки или перейти на всю свинью и выполнить пользовательское рисование кнопки. Пользовательская роспись довольно проста, так как вам нужно рисовать только текст и любое другое изображение.

Другим простым способом может быть наличие двух элементов управления, кнопки и индикатора выполнения, которые занимают одно и то же место в форме. Когда пользователь нажимает кнопку, скрыть кнопку и показать индикатор выполнения. Обновляйте индикатор выполнения по мере необходимости, пока не будет выполнена какая-либо обработка. Затем скройте индикатор выполнения и снова покажите кнопку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top