Я заметил, что стандартный ProgressBar в .NET 2.0 (Winforms) действительно отображается как причудливая анимированная светящаяся панель в Vista; однако использование ProgressBarRenderer (как это обычно делается при попытке нарисовать индикатор выполнения в представлении списка, нарисованном владельцем, в виде сетки или в другом подобном элементе управления) просто дает визуальный стиль без красивой анимации.
Полагаю, было бы глупо ожидать, что это будет просто волшебно работать - я думаю, что нативный элемент управления в Vista должен иметь какой-то встроенный таймер или поток, которого, очевидно, не существует при рисовании статического изображения. Я видел, что если вы несколько раз подряд перерисовываете элемент управления ProgressBar (используя DrawToBitmap), вы можете увидеть отдельные этапы анимированного свечения, поэтому я экспериментировал с использованием таймера для автоматического перерисовки, но что-то не так правильно внешний вид, и он также потребляет гораздо больше процессорного времени, чем фактический ProgressBar.
Это, кажется, оставляет меня с двумя нестандартными вариантами:
a) Используйте ProgressBarRenderer и в конечном итоге получите «внешний вид» Vista, но без анимации; или же
б) Используйте таймер, чтобы непрерывно перерисовывать несколько ProgressBars в растровые изображения, и тратить циклы ЦП, чтобы он выглядел лучше, но все еще не идеально.
Мне было интересно, имел ли кто-нибудь опыт встраивания индикаторов выполнения в нарисованные владельцем элементы управления и мог бы знать о лучшем способе, чем два вышеупомянутых варианта - что-то, что может точно воспроизвести свечение / блеск, не полагаясь на таймеры и / или не нажимая CPU.