Страница 1 из 1

как програмно снять размер Layout в 100% масштабе

Добавлено: 13 мар 2019, 11:04
Nimec
пытаюсь программно сохранить Layout (программа должна сохранять пачками картинки по настроенному WOR c Layout дабы на выходе получить картинку соответсвующую 100% масштаба).
пример кода
Save Window Frontwindow() as "map.jpg" Type "JPEG"
Width WindowInfo(frontwindow(),4) Units "in" Height WindowInfo(frontwindow(),5) Units "in" Resolution 300

2 недели бьюсь головой все гайды уже перечитал

И вот собственно вопрос:
Если сохранить программно, получить картинку и нажать кнопку Save window as выбрать там разрешение 300
то файлы совершенно разные
програмный не в масштабе
а при ручном в масштабе
Как его побороть программно ???

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 13 мар 2019, 13:16
wasposa
Так Вы окно Отчета (Layout) пытаетесь сохранить?

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 13 мар 2019, 13:38
wasposa
Все дело в том, что MapInfo по разному отрабатывает команду "Экспорт окна..." для окон карты и отчета, а точнее в обработке флага "Как у окна" опции "Размер изображения". В случае карты, она берет фактические размеры окна карты. А для окна отчета, в случае если этот флаг установлен, размер будет определяться текущим размером СТРАНИЦЫ и размер окна отчета не будет играть абсолютно никакой роли. Поэтому в Вашем случае программное сохранение и ручное не есть одно и то же.

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 13 мар 2019, 14:20
Nimec
Да именно окно Отчета (Layout). Вот как получить его размеры такие как он выдает в размере страници при флаге когда выставляеш разрешение не 96 а 300

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 13 мар 2019, 15:16
wasposa
Он всегда выдает по размеру страницы. Посмотрите текущий размер страницы в отчете и задайте её в команде. А лучше откройте окно MapBasic в MapInfo и выполните все действия руками. В итоге в окне MapBasic появится строка соответствующего кода. Вам и голову ломать не надо будет.

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 13 мар 2019, 15:29
Nimec
согласен если сборок около 500 каждую лопатить и под каждую запоминалку писать (см код)

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 13 мар 2019, 15:41
wasposa
Такое впечатление, что Вы меня не понимаете. Вот Вам код (при условии, что в окне отчета страница A4):

Save WindowFrontwindow() as "map.jpg" Type "JPEG" Width 8.27 Units "in" Height 11.6867 Units "in" Resolution 300

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 13 мар 2019, 17:46
Nimec
Я вас понимаю, но если я не знаю размер листа. Как можно его узнать програмно. Вот в чем соль

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 15 мар 2019, 10:07
juffin_h
Зачем огород городить? Не указывайте размер, тогда размер будет взят из размера листа.

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 15 мар 2019, 10:46
juffin_h
Эксперимент показал, что команда Save Window размер берет правильно (если его не указать), но разрешение растра реально не меняет, а просто прописывает его в файл.
Значит размер надо прописать. Узнать его можно из WindowInfo( window_spec, WIN_INFO_PRINTER_PAPERSIZE)

Re: как програмно снять размер Layout в 100% масштабе

Добавлено: 15 авг 2019, 08:50
spawner
wasposa, спасибо большое! 2 часа ломал голову как окно карты в масштабе экспортровать в растр! Вашим способом получилось сразу.

А может кто-то в курсе, можно ли для отчетов размер бумаги как-то кастомный задать, а не из стандартного списка? Или каким-то другим образом отчет в растр перегнать, чтобы все объекты влезли целиком и не оставалось белых полей?
А то приходится делать с белыми полями, а потом растр обрезать, ппц изврат