Java 如何创建用于打印的JFace对话框的屏幕截图?
我目前正在开发一个eclipse插件,它向用户显示一个条目表 如果用户双击tablerow,将打开一个自定义JFace对话框,用户可以在其中打印或取消该对话框 如何将对话框的屏幕截图创建为图像 我现在的尝试只给了我一个小矩形Java 如何创建用于打印的JFace对话框的屏幕截图?,java,eclipse-plugin,swt,jface,Java,Eclipse Plugin,Swt,Jface,我目前正在开发一个eclipse插件,它向用户显示一个条目表 如果用户双击tablerow,将打开一个自定义JFace对话框,用户可以在其中打印或取消该对话框 如何将对话框的屏幕截图创建为图像 我现在的尝试只给了我一个小矩形 PrintDialog dialog = new PrintDialog(this.getShell(), SWT.NONE); PrinterData data = dialog.open(); if(data == null) {
PrintDialog dialog = new PrintDialog(this.getShell(), SWT.NONE);
PrinterData data = dialog.open();
if(data == null)
{
return;
}
GC gc = new GC(this.getShell().getDisplay());
final Image image = new Image(this.getShell().getDisplay(), this.getShell().getBounds());
gc.copyArea(image, this.getShell().getBounds().x, this.getShell().getBounds().y);
gc.dispose();
Printer printer = new Printer(data);
if(printer.startJob("Print"))
{
GC g = new GC(printer);
if(printer.startPage())
{
g.drawImage(image, 0, 0);
}
g.dispose();
printer.endPage();
}
printer.endJob();
printer.dispose();
问题在于订单。首先应该创建图像。 我没有意识到屏幕截图的大小是正确的,但是被打印对话框覆盖了
GC gc = new GC(this.getShell().getDisplay());
final Image image = new Image(this.getShell().getDisplay(),this.getShell().getBounds());
gc.copyArea(image, this.getShell().getBounds().x, this.getShell().getBounds().y);
gc.dispose();
PrintDialog dialog = new PrintDialog(this.getShell(), SWT.NONE);
PrinterData data = dialog.open();
if(data == null)
{
return;
}
Printer printer = new Printer(data);
if(printer.startJob("Print"))
{
GC g = new GC(printer);
if(printer.startPage())
{
g.drawImage(image, 0, 0);
}
g.dispose();
printer.endPage();
}
printer.endJob();
printer.dispose();
创建的
图像
是否包含整个区域?图像包含打开的PrinterDialog的一小部分区域,但我以前认为创建图像会阻止这种行为。我的意思是:您创建的实际图像
实例(称为图像
)是否包含整个区域?你用来在打印机上画画的那个?啊,对不起,是的。哦,对不起,我发现了问题,愚蠢的我:我应该先创建图像,而不是打印机对话框。