Я пишу приложение jOGL, которое позволяет пользователю распечатать скриншот текущего рендера.Чтобы распечатать визуализацию, я устанавливаю размер контекста OpenGL для области печати на бумаге, а затем сохраняю передний буфер в изображение, которое рисуется на холсте для печати.
Приложение также должно распечататьэти снимки экрана с максимально возможным качеством, поэтому я пытался увеличить DPI с 72 по умолчанию до 300. Однако вместо увеличения разрешения изображения оно остается прежним и только теперь заполняется примерно на 1/4страница.Любая идея, почему это происходит?
Вот код печати:
// Set up for printing
PrinterJob job = PrinterJob.getPrinterJob();
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrinterResolution pr =
new PrinterResolution(300, 300, PrinterResolution.DPI);
aset.add(pr);
aset.add(PrintQuality.HIGH);
boolean ok = job.printDialog(aset);
if (ok) {
try {
Book book = new Book();
PageFormat pf = job.getPageFormat(aset);
Paper paper = pf.getPaper();
// Halve margins
paper.setImageableArea(pf.getImageableX()/2, pf.getImageableY()/2, pf.getImageableWidth() + pf.getImageableX(), pf.getImageableHeight() + pf.getImageableY());
pf.setOrientation(PageFormat.LANDSCAPE);
pf.setPaper(paper);
book.append(glcanvas, pf, 2);
job.setPageable(book);
job.print(aset);
}
}
Затем, в моем печатном объекте, я изменяю размер контекста OpenGL:
glcanvas.reshape(0, 0, (int)pf.getImageableWidth(), (int) pf.getImageableHeight() - StaticViewerUtility.HEADER_HEIGHT);
Однако, воображаемый размер PageFormat никогда не меняется.Он остается на 72, 72, 468, 648 (это 72 DPI с полями 1 "на бумаге 8,5" x11 "). Даже при DPI, установленном на 300, область изображения не меняется. Повышение этого значения только заставляет принтер видетьстраница в произвольном размере (например: 22.87232 "x11.8892"), и изображение по-прежнему распечатывается только в углу страницы. Я также пытался вручную изменить размер контекста OpenGL, но распечатка по-прежнемуобрезать по точным размерам, которые были изначально.
Пример снимка экрана проблемы: http://img32.imageshack.us/img32/2708/capturedodg.jpg
Есть что-то, что я пропускаю?