有没有办法在 GEF 编辑器中显示 SVG 图像?我发现可以将 SVG 图像转换为 SWT 图像,但我需要它是矢量格式,这样当我放大时不会出现质量损失。
2 回答
好的,我终于找到了可行的方法。似乎使用 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;
}
这完全是实验性的,当我将在我们的应用程序中实现此功能时,我将重新审视此问题并发布此接口和类的功能和正确实现。在此之前,我希望这将有助于其他正在研究此类问题的人。