Eclipse RCP使用SWT.EMBEDDED方式显示batik的svgCanvas后窗口最大化变白问题

时间:2023-01-20 13:23:28

// 设置svg组件一直动态(这一行代码导致了最大化变白的问题)
svgCanvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
// 以下两行解决最大化变白问题(具体原理不详)
svgCanvas.setDoubleBuffered(false);
svgCanvas.setDoubleBufferedRendering(false);

 

补充:过了几天后又出现同样问题,确实是JSVGCanvas.ALWAYS_DYNAMIC这一段代码导致,准备固定组件大小,添加滚动条来解决,是否可以解决未知。

 

最终解决方案:加了滚动条后还是无法解决,依然会变白,而且发现如果变白,等待了很久后SVG图还是会显示出来,但是时间很长。如果一开始显示时就最大化显示的话,之后无论如何改变窗口都不会出问题。

所以我采用在SVG的VIEW初始化的时候就直接把窗口最大化。

 

代码如下:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().setMaximized(true);