как програмно снять размер Layout в 100% масштабе
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 13 мар 2019, 10:19
- Репутация: 0
- Откуда: Славян
как програмно снять размер Layout в 100% масштабе
пытаюсь программно сохранить 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
то файлы совершенно разные
програмный не в масштабе
а при ручном в масштабе
Как его побороть программно ???
пример кода
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
то файлы совершенно разные
програмный не в масштабе
а при ручном в масштабе
Как его побороть программно ???
-
- Активный участник
- Сообщения: 109
- Зарегистрирован: 02 май 2017, 13:22
- Репутация: 22
- Откуда: Москва
Re: как програмно снять размер Layout в 100% масштабе
Так Вы окно Отчета (Layout) пытаетесь сохранить?
-
- Активный участник
- Сообщения: 109
- Зарегистрирован: 02 май 2017, 13:22
- Репутация: 22
- Откуда: Москва
Re: как програмно снять размер Layout в 100% масштабе
Все дело в том, что MapInfo по разному отрабатывает команду "Экспорт окна..." для окон карты и отчета, а точнее в обработке флага "Как у окна" опции "Размер изображения". В случае карты, она берет фактические размеры окна карты. А для окна отчета, в случае если этот флаг установлен, размер будет определяться текущим размером СТРАНИЦЫ и размер окна отчета не будет играть абсолютно никакой роли. Поэтому в Вашем случае программное сохранение и ручное не есть одно и то же.
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 13 мар 2019, 10:19
- Репутация: 0
- Откуда: Славян
Re: как програмно снять размер Layout в 100% масштабе
Да именно окно Отчета (Layout). Вот как получить его размеры такие как он выдает в размере страници при флаге когда выставляеш разрешение не 96 а 300
-
- Активный участник
- Сообщения: 109
- Зарегистрирован: 02 май 2017, 13:22
- Репутация: 22
- Откуда: Москва
Re: как програмно снять размер Layout в 100% масштабе
Он всегда выдает по размеру страницы. Посмотрите текущий размер страницы в отчете и задайте её в команде. А лучше откройте окно MapBasic в MapInfo и выполните все действия руками. В итоге в окне MapBasic появится строка соответствующего кода. Вам и голову ломать не надо будет.
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 13 мар 2019, 10:19
- Репутация: 0
- Откуда: Славян
Re: как програмно снять размер Layout в 100% масштабе
согласен если сборок около 500 каждую лопатить и под каждую запоминалку писать (см код)
-
- Активный участник
- Сообщения: 109
- Зарегистрирован: 02 май 2017, 13:22
- Репутация: 22
- Откуда: Москва
Re: как програмно снять размер Layout в 100% масштабе
Такое впечатление, что Вы меня не понимаете. Вот Вам код (при условии, что в окне отчета страница A4):
Save WindowFrontwindow() as "map.jpg" Type "JPEG" Width 8.27 Units "in" Height 11.6867 Units "in" Resolution 300
Save WindowFrontwindow() as "map.jpg" Type "JPEG" Width 8.27 Units "in" Height 11.6867 Units "in" Resolution 300
-
- Новоприбывший
- Сообщения: 4
- Зарегистрирован: 13 мар 2019, 10:19
- Репутация: 0
- Откуда: Славян
Re: как програмно снять размер Layout в 100% масштабе
Я вас понимаю, но если я не знаю размер листа. Как можно его узнать програмно. Вот в чем соль
-
- Завсегдатай
- Сообщения: 265
- Зарегистрирован: 22 окт 2012, 08:35
- Репутация: 49
- Откуда: Нижний Новгород
Re: как програмно снять размер Layout в 100% масштабе
Зачем огород городить? Не указывайте размер, тогда размер будет взят из размера листа.
-
- Завсегдатай
- Сообщения: 265
- Зарегистрирован: 22 окт 2012, 08:35
- Репутация: 49
- Откуда: Нижний Новгород
Re: как програмно снять размер Layout в 100% масштабе
Эксперимент показал, что команда Save Window размер берет правильно (если его не указать), но разрешение растра реально не меняет, а просто прописывает его в файл.
Значит размер надо прописать. Узнать его можно из WindowInfo( window_spec, WIN_INFO_PRINTER_PAPERSIZE)
Значит размер надо прописать. Узнать его можно из WindowInfo( window_spec, WIN_INFO_PRINTER_PAPERSIZE)
-
- Активный участник
- Сообщения: 103
- Зарегистрирован: 09 окт 2009, 16:49
- Репутация: 10
Re: как програмно снять размер Layout в 100% масштабе
wasposa, спасибо большое! 2 часа ломал голову как окно карты в масштабе экспортровать в растр! Вашим способом получилось сразу.
А может кто-то в курсе, можно ли для отчетов размер бумаги как-то кастомный задать, а не из стандартного списка? Или каким-то другим образом отчет в растр перегнать, чтобы все объекты влезли целиком и не оставалось белых полей?
А то приходится делать с белыми полями, а потом растр обрезать, ппц изврат
А может кто-то в курсе, можно ли для отчетов размер бумаги как-то кастомный задать, а не из стандартного списка? Или каким-то другим образом отчет в растр перегнать, чтобы все объекты влезли целиком и не оставалось белых полей?
А то приходится делать с белыми полями, а потом растр обрезать, ппц изврат
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей