На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Сохранение карты в BMP LoadMapToBmpUn

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Сохранение карты в BMP LoadMapToBmpUn
 
Добрый день.
Панорама-Редактор 13.6.6.0 x64.
Сохраняю фрагмент карты в bmp через меню Файл->Экспорт в...->Графика (BMP,..).
Вызываю LoadMapToBmpUn(hmap, hMessage, &dframe, 24, 2200, 300, fileName).
Результаты на приложенных рисунках - размер подписи и толщина линии отличаются.
Какую фунуцию использовать, чтобы получить такой же результат, как через диалог?
Диалог.bmp (1006.46 КБ)
 
Михаил написал:
Цитата
Добрый день.
Панорама-Редактор 13.6.6.0 x64.
Сохраняю фрагмент карты в bmp через меню Файл->Экспорт в...->Графика (BMP,..).
Вызываю LoadMapToBmpUn(hmap, hMessage, &dframe, 24, 2200, 300, fileName).
Результаты на приложенных рисунках - размер подписи и толщина линии отличаются.
Какую фунуцию использовать, чтобы получить такой же результат, как через диалог?

Здравствуйте!
Перед вызовом функции LoadMapToBmpUn установите способ отображения карты "ПРИНТЕРНЫЙ РАСТРИЗОВАННЫЙ" функцией mapSetViewType.
В качестве второго аргумента функции mapSetViewType подайте VT_PRINTRST.
Код
  VT_PRINTRST        = 6, // ПРИНТЕРНЫЙ РАСТРИЗОВАННЫЙ 

  // Установить способ отображения карты
  // hmap - идентификатор открытых данных
  // При установке нового способа отображения возвращается
  // предыдущее значение
  // (см. Maptype.h : VT_SCREEN(1), VT_PRINT(3), VT_PRINTRST(6),...)
  // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetViewType(HMAP hmap, long int type);
 
Здравствуйте, Дмитрий. Спасибо за совет. Я пробовал так делать. К сожалению, это не работает.
Похоже, что LoadMapToBmpUn сама устанавливает какой-то вид карты (какой?), который отличается от того, который устанавливается в стандартном диалоге сохранения в bmp.
Пробовал вызывать mapSetViewType перед LoadMapToBmpUnс разными параметрами - вид карты на экране меняется, а в bmp всегда одно и то же.
 
Добрый вечер, Михаил!
Функцию LoadMapToBmpUn вызываете из библиотеки GTK или ГИС Панорама-Редактор 13.6.6.0 x64 ?
Какие у Вас ОС, версия и разрядность библиотек GTK ?  На чем написан и скомпилирован тестовый пример ?
 
Здравствуйте.

Windows 10x64. Интерфейс PANAPI. MS VisualStudio 2019. Visual C++. Моя библиотека основана на этом примере.
Функция LoadMapToBmpUn импортируется из библиотеки mappicex64.dll и вызывается из метода SelectObject объекта TPanAction.

Примерно так:
VTYPE oldVType = (VTYPE)mapSetViewType(_hmap, VT_PRINTRST);
int result = LoadMapToBmpUn(hmap, hMessage, &dframe, 24, 2200, 300, fileName).
mapSetViewType(_hmap, oldVType);
return result;

Если убрать mapSetViewType(_hmap, oldVType) после LoadMapToBmpUn, то вид карты в окне меняется на VT_PRINTRST, если до этого он был другим,
т.е. первый вызов mapSetViewType работает. Пробовал вызывать PanWindow->UpdateWindow() между mapSetViewType и LoadMapToBmpUn - тоже не помогает
 
Попробуйте вызвать процедуру SetScreenSizeAndScaleNormal c параметром=0 и 1 из Maputil.pas

//==========================================================­==
//Установить размер диагонали видимого изображения экрана в нормальные значения для текущего экрана
// aType = 0 считаем пиксел = 0.26мм и размер диагонали высчитываем от текущих значений монитора и без масштабирования
// aType = 1 как в ГИС Панорама размер диагонали монитора = 512мм и 120% масштабирование
//==========================================================­==
procedure SetScreenSizeAndScaleNormal(aType : integer);
const
 pixcel_mm = 0.26;
var
 ddd : double;
 ii1 : integer;
begin
 if aType = 0
   then begin
     ddd := screen.Width * screen.Width + screen.Height * screen.Height;
     ddd := sqrt(ddd)*pixcel_mm;
     ii1 := 100;
   end
   else begin
     ddd := 512;
     ii1 := 120;
   end;

 mapSetScreenSize(trunc(ddd));
 mapSetScreenScale(ii1);
end;
//==========================================================­==
Изменено: Andrey Gheleznyakov - 25.11.2021 13:13:25
 
Здравствуйте.
Провел серию экспериментов. Выяснилось следующее. При сохранении через диалог панорамы в разных масштабах линейные объекты масштабируются корректно. Подпись корректно масштабируется в масштабах, меньших базового, а в масштабах, больших базового подпись остается в базовом масштабе (2000). При сохранении через LoadMapToBmpUn и подпись и линейные объеты масштабируются коррекно в любых масштабах.

По поводу mapSetScreenSize() и mapSetScreenScale(). Для их использования нужно точно знать размер пикселя текущего монитора. Мне удалось получить корректные размеры объектов в bmp только после того, как я измерил линейкой свой монитор и рассчитал размер пикселя с точностью до 4 знака (на моем мониторе это 0.2825 мм). Если от балды задать 0.26 можно получить неслабые ошибки. Надеяться, что каждый пользователь измерит свой монитор перед тем как нажать на кнопку сохранения нереально. mapGetScreenSize() и mapGetScreenScale() возвращают значения, заданные через диалог "Параметры->Параметры экрана". Что бы там ни было задано, LoadMapToBmpUn формирует одинаковые изображения правильного размера. Но стоит вызвать mapSetScreenSize() и mapSetScreenScale() перед LoadMapToBmpUn - размеры изображения начинают меняться и получаются правильными только при правильном размере пикселя монитора.

Пока что вывод: правильное изображение формирует LoadMapToBmpUn, а диалог глючит. А с ScreenSize и ScreenScale вообще какой-то бардак. Что там стоит по умолчанию?
 
Цитата
Михаил написал:
Добрый день.Панорама-Редактор 13.6.6.0 x64.
Добрый день! На нашем сайте из актуальной 13 версии Панорама-редактор 13.6.9.40 https://gisinfo.ru/download/?id=257
 
Здравствуйте.
Скачал Панорама-редактор 13.6.9.40.
Ничего не изменилось.
 
Цитата
Михаил написал:
Здравствуйте.Скачал Панорама-редактор 13.6.9.40.Ничего не изменилось.
Добрый день!
Для рассмотрения вопроса просьба прислать карту в формате sxf.
Также пришлите. пожалуйста, скриншот диалога сохранения карты с параметрами .

Можно выслать на адрес "'panorama@gisinfo.ru'" <panorama@gisinfo.ru> (с указанием вопроса с форума).
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности