Как отобразить статус рендера в форме WPF?
Я переопределяю OnRender WPF для рисования сложной графики. Это может редко занимать много времени. Я хотел бы указать пользователю, что приложение не аварийно завершает работу, а "просто" занимает много времени для рендеринга.
Как бы я это сделал? Кажется, невозможно изменить пользовательский интерфейс во время вызова OnRender.
2 ответа
Вы говорите о размещении "индикатора занятости" поверх вашего рисунка.
Просто поместите полупрозрачную сетку сверху с надписью "Загрузка...", и все готово.
Привязать его видимость к некоторому bool, который вы обновляете один раз при входе в сложный рендеринг и один раз, когда закончите.
Или установите вращающийся эллипс с градиентным фоном, если хотите увидеть движение.
Так как OnRender
метод будет выполняться в потоке пользовательского интерфейса, вы не можете делать что-либо еще, такие как отображение интерактивного ProgressBar
или ответить на ввод пользователя во время выполнения вашего кода.
Что вы можете сделать, это открыть новое окно, которое запускается в отдельном потоке, и отобразить его прямо перед тем, как вы начнете рисовать сложную графику.
Пожалуйста, обратитесь к моему ответу в следующем аналогичном вопросе для получения дополнительной информации об этом.
Экран ожидания при рендеринге UIElement в WPF
Однажды OnRender
метод вернул вас, затем закройте временное окно "загрузки":
Могу ли я остановить WPF от выполнения действий пользовательского интерфейса в моем коде