我目前正在开发一个eclipse插件,向用户显示一个条目表。
如果用户双击一个tablerow,则会打开一个自定义JFace-Dialog,用户可以在其中打印或取消该对话框。
如何将对话框的屏幕截图创建为图像?
我现在尝试给我一个小矩形。
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();
答案 0 :(得分:0)
问题在于订单。应首先创建图像。 我没有意识到屏幕截图大小是正确的,但覆盖了PrinterDialog。
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();