Russian Qt Forum
Октябрь 05, 2024, 02:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Печать размазанна.  (Прочитано 1860 раз)
alexman
Гость
« : Сентябрь 28, 2012, 10:26 »

Добрый день!

Использую QPrintPreviewDialog. По сигналу paintRequested рисую:
Код:
const QImage &image = ...;
const int width = image.width();
const int height = image.height();

QPainter painter;
painter.begin(printer);

const QRect &pageRect = printer->pageRect();
const int rowCount = qCeil((double)height / pageRect.height());
const int columnCount = qCeil((double)width / pageRect.width());
for (int i = 0; i < rowCount; ++i) {
for (int j = 0; j < columnCount; ++j) {
if (i || j) {
printer->newPage();
}

painter.drawImage(0, 0,
  image,
  j * pageRect.width() + 1,
  i * pageRect.height() + 1,
  pageRect.width(),
  pageRect.height());
}
}

painter.end();

В маштабе 100% в диалоге все отбражается корректно и достоверно. При печате же происходит размазывание картинки. Как решить данную проблему?
Записан
andrew.k
Гость
« Ответ #1 : Сентябрь 29, 2012, 00:06 »

Возможно в разрешении печати на принтере?
Ты бы картинку выложил, чтобы было понятнее, что такое "размазывание". Может проблема в барабане принтера Улыбающийся
Записан
alexman
Гость
« Ответ #2 : Сентябрь 30, 2012, 12:14 »

Проблема ясна:
Код:
const int rowCount = qCeil((double)height / pageRect.height());
const int columnCount = qCeil((double)width / pageRect.width());
Это неверно (!), так как width, pageRect.width() - это пиксели разных устройств.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.112 секунд. Запросов: 20.