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

来源:互联网 发布:拼长图软件哪个好 编辑:程序博客网 时间:2024/06/03 09:20
在实际中,有需求将我们在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();
}

原创粉丝点击