我有一个热情(1.5.0)graphViewer,它非常大,因此滚动条出现在复合中。 现在,当我尝试将此图形导出为png时,我只获得图形的可见部分。图像中没有滚动条以外的区域。
Image image = new Image(PlatformUI.getWorkbench()。getDisplay(),composite.getBounds()。width,composite.getBounds()。height); ImageLoader loader = new 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,但它没有帮助原因)。
答案 0 :(得分:0)
打印/绘图到图像与显示屏上的打印/绘图没有什么不同。你需要实际绘制所有东西,应该显示什么。我们对打印Ghantt Chart有类似的要求。您可以下载源代码并检查支持打印的方式。
这个想法是你需要控制可绘制区域并在那里逐个绘制所有对象,然后开始绘制下一页。我认为这不是最简单的任务,因为它通常需要大量的计算才能支持不同的打印设置。
在您的情况下,我不知道您是否可以控制源代码以支持此类功能,因此可以通过以编程方式滚动图形并同时绘制它来模拟它,使用{{ 1}}。但是,这可能会带来糟糕的用户体验。
还有一些框架,比如PaperClips,可以让您的打印更容易一些。还有一些swing库,可以集成到Eclipse RCP中。另外,请参阅this SO question了解详情。
希望这可以给你一些想法。