Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: alexman от Сентябрь 28, 2012, 10:26



Название: Печать размазанна.
Отправлено: 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% в диалоге все отбражается корректно и достоверно. При печате же происходит размазывание картинки. Как решить данную проблему?


Название: Re: Печать размазанна.
Отправлено: andrew.k от Сентябрь 29, 2012, 00:06
Возможно в разрешении печати на принтере?
Ты бы картинку выложил, чтобы было понятнее, что такое "размазывание". Может проблема в барабане принтера :)


Название: Re: Печать размазанна.
Отправлено: alexman от Сентябрь 30, 2012, 12:14
Проблема ясна:
Код:
const int rowCount = qCeil((double)height / pageRect.height());
const int columnCount = qCeil((double)width / pageRect.width());
Это неверно (!), так как width, pageRect.width() - это пиксели разных устройств.