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

在实际中,有需求将我们在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();
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值