0

我有一个非常大的 zest(1.5.0) graphViewer,因为结果滚动条出现在复合材料中。现在,当我尝试将此图形导出为 png 时,我只得到图形的可见部分。超出滚动条的区域在图像中不可用。

Image image = new Image(PlatformUI.getWorkbench().getDisplay(),composite.getBounds().width,composite.getBounds().height); ImageLoader 加载器 = 新 ImageLoader();

            GC gc = new GC(image);
            composite.print(gc);

            gc.dispose();

            loader.data = new ImageData[]{image.getImageData()};
            loader.save("c:/raja/graph.png", SWT.IMAGE_PNG);

如果我使用 graphViewer 对象,它会使节点折叠在左上角

GC gc = new GC(viewer.getGraphControl());
Rectangle bounds = viewer.getGraphControl().getBounds();
Image image = new Image(viewer.getGraphControl().getDisplay(), bounds);

**<Rest same as above code>**

我需要获得一张包含完整图表的图像。有没有办法实现这一点。我认为动画可能会导致第二种方法中的节点聚集。有没有办法将其关闭(我尝试将 nodeStyle 设置为 ZestStyle.No_Animation_Layout 但它没有帮助)。

4

1 回答 1

0

在图像中打印/绘图与在显示器上打印/绘图没有什么不同。您需要实际绘制所有内容,应该显示什么。我们对打印甘特图有类似的要求。您可以下载源代码并检查那里如何支持打印。

这个想法是您需要控制可绘制区域并在那里一个一个地绘制所有对象,然后开始绘制下一页。我想说这不是最简单的任务,因为它通常需要大量计算来支持不同的打印设置。

在您的情况下,我不知道您是否可以控制源代码以支持此类功能,因此可以通过以编程方式滚动图形并同时绘制它来模拟它,使用composite.print(gc). 但是,这可能会带来糟糕的用户体验。

还有一些框架,比如PaperClips可以让你的打印更容易一些。还有一些 Swing 库,可以集成到您的 Eclipse RCP 中。另外,请参阅此 SO question了解更多详细信息。

希望这能给你一些想法。

于 2014-11-07T07:15:06.460 回答