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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

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

30.09.2011, 09:31. Просмотров 1363. Ответов 12
Метки нет (Все метки)

Как их сделать без VCL и MFC? Имеется 3 похожие задачи:
1. Печать и предварительный просмотр таблицы.
2. Печать и предварительный просмотр растровой графики, в том числе, 3D рендов.
3. Печать и предварительный просмотр векторной графики.
Только во втором случае всё изображение заведомо помещается на листе целиком, а в первом и третьем случае требуется поддерживать размеры таблицы и рисунка, значительно превышающие размеры листа и печать фрагментов с разметкой линий реза и стыковки для последующего склеивания в стык/нахлёст. Печать и предварительный просмотр таблиц и векторных рисунков, целиком помещающихся на листе, можно пока вообще не рассматривать, на просмотре надо поддерживать и разметку границ фрагментов на плакате (предварительный просмотр готовой склейки с разметкой стыков), и вариант, в котором каждый фрагмент будет показан на отдельном листе с разметкой линий реза и последующей стыковки. Требуется поддерживать прокрутку и масштабирование предварительного просмотра, вместе с границами листа/склейки, то есть, чтоб пользователь мог посмотреть крупно интересующее его место, а потом вернуться к общему плану, а если край бумаги попадает в окно просмотра, то он должен быть изображён в этом месте.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2011, 09:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Печать и предварительный просмотр (C++):

Что такое "эхо печать"? И как через такую печать сделать калькулятор? - C++
Само задание такое: Создать программу-калькулятор, обеспечивающую ввод с клавиатуры в режиме эхо-печати только цифр, а также...

Просмотр каталога - C++
Столкнулся с такой проблемой: необходимо проверить все папки данного каталога A/ на наличие в них файла "1.txt" То есть, нужно...

Просмотр файлов. - C++
Доброго времени суток. Напишите плиз прогу кому не трудно. Написать программу, которая позволяет просматривать текстовые файлы (выводит...

просмотр стека - C++
вот так смотрю содержимое ВСЕГО стека: while(!mystack.empty()) { cout<<mystack.top()<<" "; mystack.pop(); } cout<<endl; ...

Просмотр изображений - C++
Здравствуйте уважаемые форумчане! Не могли б ли Вы подсказать как в QT вывести изображение, а именно с помощью компонента graphicview. Если...

Dev C++ Просмотр изображений - C++
Доброго времени суток. Проблема такая - нужно написать прогу для просмотра изображений средствами DevCpp. Гуглю уже вторые сутки - кто...

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

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

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

Добавлено через 1 минуту
Ещё вопрос. Чарлз Петзолд описывает печать на принтере. То же самое рисование в контексте, но вроде как получается метафайл, а потом он уже
проигрывается в драйвере принтера
. Если взять именно этот метафайл и проиграть в окне вместо принтера, что нибудь получится? Как при этом оключить проигрывание в принтере?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2011, 14:13
Привет! Вот еще темы с ответами:

Создание и просмотр файла - C++
Вот я создаю файл void sozdanie() { string fName; cout << "введите имя файла: "; getline( cin, fName ); ...

Сравнение 2х массивов за 1 просмотр - C++
Доброго времени суток, уважаемые форумчане:) Будьте любезны, подскажите как решить задачку. Никак не могу понять как это можно сделать...

просмотр html страниц - C++
помогите, пожалуйста, написать программу для просмотра html страниц на c++

Просмотр значений переменных - C++
Пожскажите, как в Visual Studio 2010 открыть watches: окно, где показываются значения переменных на данном шаге.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.09.2011, 14:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru