Я пытаюсь масштабировать свой компонент, так что он может поместиться на одной печатной страницы (книжная или альбомная)Fit/Scale JComponent на печатаемой страницы
gDiagram.getComponent()
является компонентом (JPanel) Я пытаюсь печатать.
Вот что у меня до сих пор основано на How can I print a single JPanel's contents?
/**
* Prints the diagram.
*/
public void printDiagram() {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName(" Print Component ");
pj.setPrintable(new Printable() {
@Override
public int print(Graphics g, PageFormat pf, int pageNumber)
throws PrinterException {
// TODO Auto-generated method stub
if (pageNumber > 0) {
return Printable.NO_SUCH_PAGE;
}
Graphics2D g2 = (Graphics2D) g;
g2.translate(pf.getImageableX(), pf.getImageableY());
double sx = pf.getImageableWidth()/gDiagram.getComponent().getWidth();
double sy = pf.getImageableHeight()/gDiagram.getComponent().getHeight();
gDiagram.getComponent().paint(g2);
g2.scale(sx, sy);
return Printable.PAGE_EXISTS;
}
});
if (!pj.printDialog()) {
return;
}
try {
pj.print();
} catch (PrinterException ex) {
System.out.println(ex);
}
}
Я не слишком хорошо знаком с графикой, так что любая помощь будет оценен
Это [пример] (HTTP: // StackOverflow .com/a/7028497/230513) использует 'AffineTransformOp'. – trashgod
Будет ли компонент, начинающий масштабироваться, вписываться в страницу? – MadProgrammer
@MadProgrammer Привет - Я не понимаю ваш вопрос извините –