Непонятки с QPainter::viewport |
Здравствуйте, гость ( Вход | Регистрация )
Непонятки с QPainter::viewport |
Rocky |
25.3.2009, 19:48
Сообщение
#1
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
Всем привет!
Не могу разобраться с выводом на печать. Есть функция QPainter::viewport которая вроде как возвращает область печати. Пишу такой код:
Затем создаю QPainter на основе этого принтера. Но на разных машинах QPainter::viewport возвращает разные значения. В результате, на одной машине все выводится на печать нормально, на другой - обрезаются края.... Как сделать, чтобы размеры области вывода на печать были одинаковые? Ведь А4 он и в африке А4. Пробовал делть отступы нулевые (margins) - не помогает. Все равно данные обрезаются... Кто-нить знает, что вообще возвращает viewport? мм, см, пиксели? Почему так получается что на листе размером 297х210 мм на одной машине влезает все, а на другой происходит обрез? Как бороться? Та же хрень касается и и генерации pdf. Вроде заявлено что один и тот же код одинаково все выводит. На одной и той же машине печатаю - ок, генерю pdf - половина данных где-то в ауте ((( Спасибо... |
|
|
BRE |
25.3.2009, 19:58
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Кто-нить знает, что вообще возвращает viewport? мм, см, пиксели? Почему так получается что на листе размером 297х210 мм на одной машине влезает все, а на другой происходит обрез? Как бороться? viewport возвращает размер в пикселях. У разных принтеров, разное разрешение в точках (это параметр "Количество точек на дюйм" (DPI)). Тебе нужно все маштабировать относительно этого dpi. Посмотри на QPaintDevice, это базовый класс для QPrinter. Он тебе сможет вернуть размеры в мм, ну и сами значения dpi. |
|
|
Rocky |
25.3.2009, 20:15
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
ага,....
А можно как-то "беболезненно" отмаштабировать всю страницу? В смысле чтобы все данные уместились на странице? или лучше играться dpi и подобрав нужный коэффициент, например, устанавливать соотвествующее dpi на всех машинах? |
|
|
BRE |
25.3.2009, 20:23
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
ага,.... А можно как-то "беболезненно" отмаштабировать всю страницу? В смысле чтобы все данные уместились на странице? или лучше играться dpi и подобрав нужный коэффициент, например, устанавливать соотвествующее dpi на всех машинах? Есть размер страницы в точках, есть размер в мм. Делим первое на второе - получаем коэффициент (количество точек в одном мм). При формировании отчета все размеры задавай в мм, а для пересчета в точки умножай на получившийся коэффициент. |
|
|
Rocky |
26.3.2009, 14:59
Сообщение
#5
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
С этим вроде разобрался... Все решилось проще: вызовом QPrinter::setFullPage(true). Теперь хоть одинаковость появилась.
|
|
|
Текстовая версия | Сейчас: 22.12.2024, 8:37 |