RUS  ENG 

Перерисовка карты

Страницы: 1
RSS
Перерисовка карты, Add method (Layers) vbs
 
При использовании метода Add method (Layers) происходит перерисовка карты.
Поскольку я добавляю последовательно несколько слоев и расставляю их в нужном порядке, настраиваю их отображение, то каждый раз карта перерисовывается, что тормозит процесс и экран каждый раз мигает.
Можно как то запретить перерисовку карты, пока все манипуляции не будут сделаны, как например в диалоге Слои. Все добавили, сделали что нужно, потом кнопка ок и уже идет перерисовка.
 
Если добавление слоев идет последовательно в линейном коде, то после каждого добавления перерисовки не происходит.
В диалоге Слои не запрещена перерисовка. В диалоге идет накопление последовательности действий, которые подряд выполняются после нажатия ОК
 
Хорошо, переписала программу, теперь сначала добавили все слои последовательно, и только после этого выполняем манипуляцию по перемещению слоев - на свои места
методом Sub Move(Index, Order As eLayerOrder) в цикле, пока не слой не достигнет нужного места . После перемещения каждого слоя происходит перерисовка экрана, т.е. переместила 4 слоя каждый на свое место- 4 раза мигнул экран. Слои растровые.
Изменено: Aly - 10.05.2018 16:12:47
 
Добавили для карты методы блокировки и разблокировки отрисовки карты:
https://politerm.com/zuludoc/index.html#zuluax/MapDoc_LockRedraw.html
https://politerm.com/zuludoc/index.html#zuluax/MapDoc_UnlockRedraw.html

Работать, не моргая, должно примерно так
Код
' ActiveX enumeration values definitions start (do not change!)
Const eMoveToBack = 0
Const eMoveForwardOne = 2
' ActiveX enumeration values definitions end


Sub Add

'Блокируем отрисовку
zulu.ActiveMapDoc.LockRedraw 0

zulu.ActiveMapDoc.Layers.Add "D:\ZuluData\Raster\PLAN1\2529\AAA\BBB\111_1.zrs"
zulu.ActiveMapDoc.Layers.Add "D:\ZuluData\Raster\PLAN1\2529\AAA\BBB\111_2.zrs"
zulu.ActiveMapDoc.Layers.Add "D:\ZuluData\Raster\PLAN1\2529\AAA\BBB\111_3.zrs"
zulu.ActiveMapDoc.Layers.Add "D:\ZuluData\Raster\PLAN1\2529\AAA\BBB\111_4.zrs"

zulu.ActiveMapDoc.Layers.Move 3, eMoveToBack   
zulu.ActiveMapDoc.Layers.Move 2, eMoveForwardOne
zulu.ActiveMapDoc.Layers.Move 1, eMoveForwardOne

'Разблокируем отрисовку
zulu.ActiveMapDoc.UnlockRedraw 0

'Отрисовываем без моргания
zulu.ActiveMapDoc.Refresh true

End Sub
 
Спасибо! Теперь все происходит быстрее и приятнее глазу. :)
Страницы: 1