我需要重新缩放图像以进行打印,但我只有两个不同的结果:
- 图片比页面大。
- 图像被剪切,我只看到页面上图像的一小部分。
我放了两张图片以便更好地看到它。第一个是我现在得到的结果:
第二个是我必须在页面上看到的图像,我必须重新缩放,因为它比页面大:
可能是打印问题或“重新缩放”方法不起作用?我把我的代码放在下面:
public int print(Graphics g, PageFormat pf, int pageIndex)
{
if (pageIndex != 0)
return NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Serif", Font.PLAIN, 36));
g2.setPaint(Color.black);
g2.scale(200, 200);
g2.drawImage(createImage(temperaturePlot), null, 20, 20);
return PAGE_EXISTS;
}
public BufferedImage createImage(JPanel panel)
{
int w = panel.getWidth();
int h = panel.getHeight();
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
panel.paint(g);
return bi;
}
我想要的只是缩放图像并查看页面上的所有值。
有什么帮助吗?谢谢!
我用新的commens改变了方法,但它不起作用:
class MyPrintableGraphic implements Printable
{
public int print(Graphics g, PageFormat pf, int pageIndex)
{
if (pageIndex != 0)
return NO_SUCH_PAGE;
BufferedImage original = createImage(temperaturePlot);
original.getScaledInstance(200, 200,BufferedImage.SCALE_DEFAULT);
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Serif", Font.PLAIN, 36));
g2.setPaint(Color.black);
//BufferedImage image = createImage(temperaturePlot);
//Image scaled = image.getScaledInstance(200,200,Image.SCALE_SMOOTH);
g2.drawImage(original, 0, 0, null);
/*BufferedImage mbi = resizeImage(createImage(temperaturePlot), 200, 200);
g2.drawImage(mbi, null, 20, 20);*/
return PAGE_EXISTS;
}
}
这是新的失败结果: