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. Также, пожалуйста, смотрите этот вопрос для получения более подробной информации.

Надеюсь, что это может дать вам некоторые идеи.

Другие вопросы по тегам