Как отобразить статус рендера в форме WPF?

Я переопределяю OnRender WPF для рисования сложной графики. Это может редко занимать много времени. Я хотел бы указать пользователю, что приложение не аварийно завершает работу, а "просто" занимает много времени для рендеринга.

Как бы я это сделал? Кажется, невозможно изменить пользовательский интерфейс во время вызова OnRender.

2 ответа

Вы говорите о размещении "индикатора занятости" поверх вашего рисунка.

Просто поместите полупрозрачную сетку сверху с надписью "Загрузка...", и все готово.

Привязать его видимость к некоторому bool, который вы обновляете один раз при входе в сложный рендеринг и один раз, когда закончите.

Или установите вращающийся эллипс с градиентным фоном, если хотите увидеть движение.

Так как OnRender метод будет выполняться в потоке пользовательского интерфейса, вы не можете делать что-либо еще, такие как отображение интерактивного ProgressBar или ответить на ввод пользователя во время выполнения вашего кода.

Что вы можете сделать, это открыть новое окно, которое запускается в отдельном потоке, и отобразить его прямо перед тем, как вы начнете рисовать сложную графику.

Пожалуйста, обратитесь к моему ответу в следующем аналогичном вопросе для получения дополнительной информации об этом.

Экран ожидания при рендеринге UIElement в WPF

Однажды OnRender метод вернул вас, затем закройте временное окно "загрузки":

Могу ли я остановить WPF от выполнения действий пользовательского интерфейса в моем коде

Другие вопросы по тегам