Eclipse Zest- свернутый узел графа graphViewer при экспорте в виде изображения
У меня есть zest(1.5.0) graphViewer, который довольно большой, так как в результате появляется композитная полоса прокрутки. Теперь, когда я пытаюсь экспортировать этот график как png, я получаю только видимую часть графика. Область за пределами полос прокрутки на изображении недоступна.
Изображение image = новое изображение (PlatformUI.getWorkbench (). GetDisplay (), композитный.getBounds (). Ширина, композитный.getBounds (). Высота); 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, но это не помогло причине).
1 ответ
Печать / рисование на изображении ничем не отличается от печати / рисования на дисплее. Вам нужно на самом деле нарисовать все, что должно отображаться. У нас было похожее требование для печати диаграммы Ганта. Вы можете скачать исходный код и проверить, как там поддерживается печать.
Идея состоит в том, что вам нужно контролировать область рисования и рисовать все объекты по одному, а затем начинать рисовать следующую страницу. Я бы сказал, что это не самая простая задача, так как обычно требуется много вычислений для поддержки различных настроек печати.
В вашем случае я не знаю, имеете ли вы контроль над исходным кодом для поддержки такой функциональности, поэтому, возможно, можно будет эмулировать его, программно прокручивая график и рисуя его одновременно, используя composite.print(gc)
, Тем не менее, это может привести к плохому пользовательскому опыту.
Есть также некоторые фреймворки, такие как PaperClips, чтобы сделать вашу печать немного проще. Есть также несколько библиотек свинга, которые могут быть интегрированы в ваш Eclipse RCP. Также, пожалуйста, смотрите этот вопрос для получения более подробной информации.
Надеюсь, что это может дать вам некоторые идеи.