RUS  ENG 

Печать карты в пределах заданного контура

Страницы: 1
RSS
Печать карты в пределах заданного контура
 
Добрый день. Есть задача напечатать карту в пределах выбранного площадного объекта (например, избирательного участка). Я это делаю так. Создаю новый слой, в нем рисую большой белый непрозрачный квадрат, перекрывающий всю карту, из него с помощью операции с мишенью вырезаю этот площадной объект и вывожу область, чуть превышающую границы объекта, на печать. Все печатается в пределах контура, но вот метки от других слоев печатаются и поверх этого временного белого непрозрачного объекта. Не подскажете, как можно от них избавиться, чтобы метки загруженых слоев тоже печатались в пределах этого контура? Или может быть подскажете другой способ печати выбранного площадного объекта?
Заранее спасибо за ответ.
P.S.: Еще требуется вариант, когда остальная карта за пределами объекта, должна быть слегка "приглушена". Я это делаю, устнавливая прозрачность на тот большой белый квадрат. Все объекты действительно становятся еле видны, но метки все-равно печатаются ярким черным цветом! Они не "приглушаются".
 
Да сейчас особо никак нормально не сделать.
В планах стоит сделать возможность задавать произвольную область отрисовки.
Либо задавать последовательность вывода слоев как-то более детально. Это все в новом году только будет.
Но один способ есть и сейчас: можно этому слою с контуром сказать программно Layer.InMemory = true
Тогда он будет поверх всего рисоваться, в том числе и поверх бирок.
 
Добрый день! У меня почти такая же задача. Нужно вывести в файл выбранный площадной объект, стороны которого будут подписаны определенным текстом.
Поскольку подписи должны быть за пределами самого объекта и не должны сливаться с картой,
я тоже рисую большой белый непрозрачный квадрат, который выполняет функцию белой рамки, на которой расположены подписи.
Но проблема та же: слой с квадратом делаю InMemory, но метки от других слоев все равно выводятся поверх квадрата.
Помогите, пожалуйста, как это исправить?
 
Бирки с флагом "Авто" будут все рано поверх рисоваться. Это нам тогда нужно добавить в объектную модель признак, чтобы слой InMemory рисовался после всех других отрисовок.
 
Вроде бы это логично. Если InMemory поверх всего рисуется, то и поверх всех бирок должен рисоваться. Вы добавите признак? :)
 
Добавим. Не сложно.
 
Спасибо большое! Это в обновлении будет?
 
Обновили. Добавил Layer.InMemoryLayer.SetFlags и Layer.InMemoryLayer.GetFlags
Если вызвать SetFlags 1, то этот слой будет отрисовываться после всего остального.
 
Работает! Спасибо!
Страницы: 1