В приложении Windows Forms на C #. У меня есть заставка с некоторыми многопоточными процессами, происходящими в фоновом режиме. Я бы хотел, чтобы когда я сначала отображал экран-заставку, я бы хотел, чтобы он «исчезал». И затем, когда все процессы закончатся, я хотел бы, чтобы экран-заставка «исчезла». Я использую C # и .NET 2.0. Спасибо.
Появление и исчезновение заставки
Ответы (4)
Вы можете использовать таймер, чтобы изменить Уровень прозрачности формы.
person
user7116
schedule
17.09.2008
При использовании свойства Opacity нужно помнить, что это тип double, где 1.0 - полная непрозрачность, а 0.0 - полная прозрачность.
private void fadeTimer_Tick(object sender, EventArgs e)
{
this.Opacity -= 0.01;
if (this.Opacity <= 0)
{
this.Close();
}
}
person
slyprid
schedule
17.09.2008
Это постепенное исчезновение, а не нарастание.
- person Joe Hildebrand; 17.09.2008
Если бы таймер был установлен на быстрые 50 мс, а непрозрачность задана в процентах, то не заняло бы ли это постепенное исчезновение около 8 минут?
- person mackenir; 04.11.2009
@mackenir Если ваш таймер 50 мс / тик, то это займет 5 секунд. (1,0 / 0,01) = 100 * 50 мс = 5000 мс = ›5 с
- person slyprid; 05.11.2009
Привет @aarontfoley! Я взял на себя смелость отредактировать ваш ответ, чтобы удалить упоминание о том, что непрозрачность является «процентной», поскольку это противоречит следующему тексту (непрозрачность - значение от 0 до 1). Не стесняйтесь возвращаться и вносить изменения самостоятельно, или нет. Я знаю, как это может раздражать, когда твой ответ редактирует кто-то другой. Ваше здоровье.
- person mackenir; 09.11.2009
Вы можете использовать свойство Opacity для формы, чтобы изменить затухание (от 0,0 до 1,0).
person
RichS
schedule
17.09.2008
person
schedule
так вы угасаете за 2 итерации? Я не могу назвать это постепенным исчезновением ... более того, я считаю, что ваш Thread.Sleep блокирует поток пользовательского интерфейса, тем самым предотвращая его обновление.
- person Idan K; 09.11.2009
Идан успокойся. Сначала я написал -0,5, и это была опечатка, на самом деле 0,05 могло быть лучше. Но вы можете использовать тот, который хотите ... Thread.Sleep () не блокирует пользовательский интерфейс, поскольку он дает место для Redraw. Возможно, не лучшее решение, но оно работает.
- person Patrick Desjardins; 09.02.2010