Как постоянно обновлять фигуры на холсте в WPF? - PullRequest
1 голос
/ 08 апреля 2011

У меня есть элемент управления Canvas в моем приложении WPF, и я создаю множество фигур в другом потоке и добавляю их на холст (используя Dispatcher), но так как я воссоздаю дочерние элементы (они динамические и сгенерированные из других данных, и их количество изменяется во время выполнения), я вызываю:

canvas.Children.Clear();

, но при этом «мигает» холст, что дает мерцающий вид, когда холст очищается и заполняется. Можно ли сделать так, чтобы это выглядело "непрерывным", чтобы шаг чистого холста не был виден?

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

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Canvas позволяет вам управлять позиционированием своих дочерних элементов, но он по-прежнему отвечает за операции рисования.Если вы очищаете его дочерние элементы, вы фактически запрашиваете его перерисовать только с его фоном.

Вам разрешено изменять дочерний элемент Canvas, поэтому я предлагаю изменить свойства дочернего элемента (вместо удаления иповторно добавив его), если вы решите, что он все еще должен существовать.В противном случае удалите его, создайте новые и добавьте их.

0 голосов
/ 08 апреля 2011

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

...