2016-02-02 3 views
0

У меня проблемы с обновлением с помощью Windows.UI.Xaml.Controls.Maps.MapControl. В приведенном ниже коде Map является экземпляром Windows.UI.Xaml.Controls.Maps.MapControl. У меня есть mapPolygons, который я периодически обновляю каждые ~ 40 мс, и на карте есть много артефактов/миганий с mapPolygons. В настоящее время я просто добавляю MapPolygons в список Map.MapElements и удаляю старые. Есть ли способ включить двойную буферизацию для управления картой в универсальных приложениях Windows 10? Иначе, что я должен сделать, чтобы устранить артефакты/проблескивание?Double Buffering Win 10 Universal App Maps

В настоящее время я добавляю элементы с видимостью в ложь, затем устанавливаю их видимыми, скрывая старые элементы, а затем удаляя старые элементы.

Фрагмент текущего кода обновления:

polygon1.Visible = false; 
polygon2.Visible = false; 
Map.MapElements.Add(polygon1); 
Map.MapElements.Add(polygon2); 
polygon1.Visible = true; 
polygon2.Visible = true; 
for (int i = Map.MapElements.Count - 1 - 2; i >= 0; i--) // Last two elements are new, remove others 
{ 
    Map.MapElements[i].Visible = false; 
} 
for (int i = Map.MapElements.Count - 1 - 2; i >= 0; i--) // Last two elements are new, remove others 
{ 
    Map.MapElements.RemoveAt(i); 
} 
+0

Почему вы сначала скрываете их, прежде чем удалять их? –

+0

Это было частью моих попыток свести к минимуму артефакты, но это не сработало. Игнорируй это. Есть ли способ включить двойную буферизацию для графики, или я придерживаюсь, когда полигоны мигают, когда они обновляются. – LloydGrade

ответ

0

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

Смежные вопросы