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

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
Nimec
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 мар 2019, 10:19
Репутация: 0
Откуда: Славян

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

Сообщение Nimec » 13 мар 2019, 11:04

пытаюсь программно сохранить 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
то файлы совершенно разные
програмный не в масштабе
а при ручном в масштабе
Как его побороть программно ???

wasposa
Участник
Сообщения: 65
Зарегистрирован: 02 май 2017, 13:22
Репутация: 11
Откуда: Москва

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

Сообщение wasposa » 13 мар 2019, 13:16

Так Вы окно Отчета (Layout) пытаетесь сохранить?

wasposa
Участник
Сообщения: 65
Зарегистрирован: 02 май 2017, 13:22
Репутация: 11
Откуда: Москва

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

Сообщение wasposa » 13 мар 2019, 13:38

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

Nimec
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 мар 2019, 10:19
Репутация: 0
Откуда: Славян

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

Сообщение Nimec » 13 мар 2019, 14:20

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

wasposa
Участник
Сообщения: 65
Зарегистрирован: 02 май 2017, 13:22
Репутация: 11
Откуда: Москва

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

Сообщение wasposa » 13 мар 2019, 15:16

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

Nimec
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 мар 2019, 10:19
Репутация: 0
Откуда: Славян

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

Сообщение Nimec » 13 мар 2019, 15:29

согласен если сборок около 500 каждую лопатить и под каждую запоминалку писать (см код)

wasposa
Участник
Сообщения: 65
Зарегистрирован: 02 май 2017, 13:22
Репутация: 11
Откуда: Москва

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

Сообщение wasposa » 13 мар 2019, 15:41

Такое впечатление, что Вы меня не понимаете. Вот Вам код (при условии, что в окне отчета страница A4):

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

Nimec
Новоприбывший
Сообщения: 4
Зарегистрирован: 13 мар 2019, 10:19
Репутация: 0
Откуда: Славян

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

Сообщение Nimec » 13 мар 2019, 17:46

Я вас понимаю, но если я не знаю размер листа. Как можно его узнать програмно. Вот в чем соль

juffin_h
Активный участник
Сообщения: 227
Зарегистрирован: 22 окт 2012, 08:35
Репутация: 41
Откуда: Нижний Новгород

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

Сообщение juffin_h » 15 мар 2019, 10:07

Зачем огород городить? Не указывайте размер, тогда размер будет взят из размера листа.

juffin_h
Активный участник
Сообщения: 227
Зарегистрирован: 22 окт 2012, 08:35
Репутация: 41
Откуда: Нижний Новгород

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

Сообщение juffin_h » 15 мар 2019, 10:46

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

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость