1

有没有办法在 GEF 编辑器中显示 SVG 图像?我发现可以将 SVG 图像转换为 SWT 图像,但我需要它是矢量格式,这样当我放大时不会出现质量损失。

4

2 回答 2

1

根据这个站点,您应该可以使用GMFSVGFigure类。

此类不依赖于 GMF。

于 2012-09-28T12:18:28.020 回答
0

好的,我终于找到了可行的方法。似乎使用 org.eclipse.gmf.runtime.draw2d.ui.render.figures.ScalableImageFigure 就是答案。ScalableImageFigure 是 Figure 的子类,因此它的工作方式与普通 GEF Figure 类似。您可以在 GMF 的运行时库包中找到它。

使用 ScalableImageFigure 您可以在 GEF 中显示 SVG 图像,但是当您放大时仍然会出现质量损失。要克服这个问题,您需要子类化 ScalableImageFigure 并实现 org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode。当您放大可缩放图形时,将重新绘制,并重新渲染图像。org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode.LPtoDP(Translatable) 将返回要渲染的图像的比例。我没有足够的时间来正确实现这个接口,我只需要检查它是否有效,所以我只是在子类中创建了一个字段(int 名为 scale,默认值为 1),每次调用 LPtoDP 时都会递增

   public Translatable LPtoDP(Translatable t) {
  t.performScale(scale++);
  return t;

}

这完全是实验性的,当我将在我们的应用程序中实现此功能时,我将重新审视此问题并发布此接口和类的功能和正确实现。在此之前,我希望这将有助于其他正在研究此类问题的人。

于 2012-10-03T12:03:38.063 回答