Форум программистов, компьютерный форум CyberForum.ru

Печать и предварительный просмотр - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.09.2011, 09:31     Печать и предварительный просмотр #1
Как их сделать без VCL и MFC? Имеется 3 похожие задачи:
1. Печать и предварительный просмотр таблицы.
2. Печать и предварительный просмотр растровой графики, в том числе, 3D рендов.
3. Печать и предварительный просмотр векторной графики.
Только во втором случае всё изображение заведомо помещается на листе целиком, а в первом и третьем случае требуется поддерживать размеры таблицы и рисунка, значительно превышающие размеры листа и печать фрагментов с разметкой линий реза и стыковки для последующего склеивания в стык/нахлёст. Печать и предварительный просмотр таблиц и векторных рисунков, целиком помещающихся на листе, можно пока вообще не рассматривать, на просмотре надо поддерживать и разметку границ фрагментов на плакате (предварительный просмотр готовой склейки с разметкой стыков), и вариант, в котором каждый фрагмент будет показан на отдельном листе с разметкой линий реза и последующей стыковки. Требуется поддерживать прокрутку и масштабирование предварительного просмотра, вместе с границами листа/склейки, то есть, чтоб пользователь мог посмотреть крупно интересующее его место, а потом вернуться к общему плану, а если край бумаги попадает в окно просмотра, то он должен быть изображён в этом месте.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2011, 09:31     Печать и предварительный просмотр
Посмотрите здесь:

Просмотр файлов. C++
C++ Просмотр изображений
Просмотр значений переменных C++
C++ Сравнение 2х массивов за 1 просмотр
Просмотр каталога C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
30.09.2011, 11:45     Печать и предварительный просмотр #2
QPrinter + QPrintDialog + QTextDocument
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.09.2011, 12:13  [ТС]     Печать и предварительный просмотр #3
Цитата Сообщение от LosAngeles Посмотреть сообщение
QPrinter
Это ваще кто? Откуда? Мне надо виндовыми апями.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.09.2011, 12:16     Печать и предварительный просмотр #4
taras atavin,
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.09.2011, 12:18  [ТС]     Печать и предварительный просмотр #5
Цитата Сообщение от fasked Посмотреть сообщение
http://www.rsdn.ru/article/wtl/wtlprint.xml
Какие ещё экзотичные библиотеки предложишь?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.09.2011, 12:28     Печать и предварительный просмотр #6
taras atavin, я могу тебе сказать, что написать стабильные предварительный просмотр и печать на голом WinApi тебе не светит. И даже не потому, что у тебя может быть недостаточно скилла. А просто потому что это слишком объемная работа. К слову, WTL это не экзотика, а темплейтная обертка API, и эта обертка поддерживается Microsoft. Здесь экзотики столько же, сколько в использовании WINAPI в таком ключе сегодня.

Рассказать тебе вкратце, как происходит печать документов средствами API?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.09.2011, 12:43  [ТС]     Печать и предварительный просмотр #7
Цитата Сообщение от fasked Посмотреть сообщение
А просто потому что это слишком объемная работа.
Врядли, я же не экзел хочу повторить и даже не суперкалк, а сделать свою достаточно ограниченную таблицу с печатью и предварилкой. А вот разбираться во всех нюансах универсальной библиотеки с избыточными для меня возможностями как раз на порядки дольше. Я в делфе угробил несколько дней на QReport и так и не понял в нём ничего, а на TImage за час сделал почти что то, что сейчас хочу по второму пункту, не хватало только границ бумаги. Прикручивать же студии визуальные компоненты вообще мне капитально лень. Единственная библиотека, на которую я соглашусь в сочетании со студией - это OpenGL.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.09.2011, 12:51     Печать и предварительный просмотр #8
Цитата Сообщение от taras atavin Посмотреть сообщение
сделать свою достаточно ограниченную таблицу с печатью и предварилкой
Под одно разрешение монитора, одно разрешение принтера и одну таблицу - получится. Любые изменения в составляющих и... опять гигантский объем работ.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.09.2011, 13:04  [ТС]     Печать и предварительный просмотр #9
Цитата Сообщение от fasked Посмотреть сообщение
Под одно разрешение монитора, одно разрешение принтера и одну таблицу - получится.
Разрешение и ширина полей может меняться, размер бумаги - только A4, в таблице могут меняться только значения, а не типы данных, как в экзеле, их ввод и расчёт - не проблема, вопрос именно в адекватном действительной печати предварительный просмотр с понятным пользователю отображением края листа.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.09.2011, 13:52     Печать и предварительный просмотр #10
Цитата Сообщение от taras atavin Посмотреть сообщение
Разрешение и ширина полей может меняться, размер бумаги - только A4, в таблице могут меняться только значения, а не типы данных, как в экзеле, их ввод и расчёт - не проблема, вопрос именно в адекватном действительной печати предварительный просмотр с понятным пользователю отображением края листа.
Я тебе уже сказал название книги, в которой это все описано
На голом WINAPI предварительный просмотр создается рисованием в контекст окошка. Да-да, именно рисованием. А чтобы получить реальное совпадение масштабов на мониторе и бумаге придется повозиться с разрешениями.

В 2009 году мне тоже никто не ответил на похожий вопрос: Предварительный просмотр печати
Все, что мне оставалось это ковырять исходники WTL - ибо open source, и вчитываться в примеры Фень Юаня.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.09.2011, 14:02  [ТС]     Печать и предварительный просмотр #11
Цитата Сообщение от fasked Посмотреть сообщение
А чтобы получить реальное совпадение масштабов на мониторе и бумаге придется повозиться с разрешениями.
Кто говорит о совпадении? Если на дисплее та же картинка, адекватная реальной печати с учётом масштаба, равного отношению размеров изображения листа на дисплее к реальным размерам этого листа, то цель достигнута в полном объёме. А вот если в предварилке ширина текста ячейки, измеренная в процентах от ширины листа, на 15% от самого значения больше, чем в тех же единицах, но на реальном листе после его печати - в корзину такой просмотр даже при совпадении масштаба. И масштабирование предварилки должно быть произвольным. То есть требуется соблюсти реальные пропорции, а не размеры. При пользовании дисплеем задача так ставится всегда, а если пользователя это не устраивает, то пусть с линейкой, или образцом листа (возможно, чистого) в руках подбирает масштаб, прикладывая свой инструмент к экрану.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
30.09.2011, 14:06     Печать и предварительный просмотр #12
Цитата Сообщение от taras atavin Посмотреть сообщение
Кто говорит о совпадении? Если на дисплее та же картинка, адекватная реальной печати с учётом масштаба, равного отношению размеров изображения листа на дисплее к реальным размерам этого листа, то цель достигнута в полном объёме. А вот если в предварилке ширина текста ячейки, измеренная в процентах от ширины листа, на 15% от самого значения больше, чем в тех же единицах, но на реальном листе после его печати - в корзину такой просмотр даже при совпадении масштаба. И масштабирование предварилки должно быть произвольным. То есть требуется соблюсти реальные пропорции, а не размеры.
Ты с кем споришь то? Сам с собой? Я лично не знаю, как должна работать твоя свистелка и знать не хочу. И не надо мне этого объяснять.
Конкретных вопросов в твоей теме я тоже не увидел, ровно как и попыток хоть что-либо сделать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2011, 14:13     Печать и предварительный просмотр
Еще ссылки по теме:

C++ просмотр стека
Просмотр элементов стека C++
Двусвязный список: вставка, удаление, просмотр C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
30.09.2011, 14:13  [ТС]     Печать и предварительный просмотр #13
В экзеле когда редактируешь таблицу, она ведь тоже рисуется в контексте окна. Так вот, текст ячейки в этом режиме может на 3-4 буквы не влезать в ячейку, а на бумаге в этой же ячейке оставаться место. Вопрос: как в предварительном просмотре этого избежать? Предварительный просмотр того же экзела адекватен. А в ворде вообще нет разницы между предварительным просмотром и режимом редактирования - оба одинаково адекватны реальной печати.

Добавлено через 1 минуту
Ещё вопрос. Чарлз Петзолд описывает печать на принтере. То же самое рисование в контексте, но вроде как получается метафайл, а потом он уже
проигрывается в драйвере принтера
. Если взять именно этот метафайл и проиграть в окне вместо принтера, что нибудь получится? Как при этом оключить проигрывание в принтере?
Yandex
Объявления
30.09.2011, 14:13     Печать и предварительный просмотр
Ответ Создать тему
Опции темы

Текущее время: 04:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru