您的位置:首页 > 其它

将GEF图形另存为图像文件(转)

2005-08-09 12:56 357 查看
在实际中,有需求将我们在GEF中画的图形保存为标准格式的图像文件.在网上找到了一个这样的方法.

public boolean saveImageFile(GraphicalViewer vierer,String fileName){
//save diagram to image file
//根据root part类型,cast 为对应的RootEditPart
ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart)viewer.getEditPartRegistry().get(LayerManager.ID);
IFigure rootFigure = ((LayerManager)rootEditPart).getLayer(LayerConstants.PRINTABLE_LAYERS);//rootEditPart.getFigure();
//用其它的方式获取到root figure也可以...
Rectangle rootFigureBounds = rootFigure.getBounds();

Control figureCanvas = viewer.getControl();
GC figureCanvasGC = new GC(figureCanvas);

Image img = new Image(null, rootFigureBounds.width, rootFigureBounds.height);
GC imageGC = new GC(img);
imageGC.setBackground(figureCanvasGC.getBackground());
imageGC.setForeground(figureCanvasGC.getForeground());
imageGC.setFont(figureCanvasGC.getFont());
imageGC.setLineStyle(figureCanvasGC.getLineStyle());
imageGC.setLineWidth(figureCanvasGC.getLineWidth());
imageGC.setXORMode(figureCanvasGC.getXORMode());
Graphics imgGraphics = new SWTGraphics(imageGC);

rootFigure.paint(imgGraphics);

ImageData[] imgData = new ImageData[1];
imgData[0] = img.getImageData();

ImageLoader imgLoader = new ImageLoader();
imgLoader.data = imgData;

//具体格式见:FileFormat,4为JPEG类型
imgLoader.save(fileName, 4);

figureCanvasGC.dispose();
imageGC.dispose();
img.dispose();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: