У меня проблемы с производительностью с Batik, когда я пытаюсь отображать SVG-файлы с помощью SWT. Это похоже на очень раздутую библиотеку, но единственное, что я мог найти, это SVGSalamander, и похоже, что это только Swing. Есть ли способ визуализации SVG, не преобразовывая их в растровую форму, а это быстрее? Это должна быть кросс-платформа.SVG-рендеринг в Java с использованием SWT - Батик слишком медленный
3
A
ответ
3
Если вам нужен только рендеринг, я настоятельно рекомендую использовать Mozilla (XULRunner) или WebKit (WebKitGTK +), так как они могут быть встроены в библиотеку SWT.
- Mozilla XULRunner может использоваться в Windows, Linux и Mac. Его можно использовать в классе SWT
Browser
, передав конструктору конструкторSWT.Mozilla
. - Safary (это WebKit) используется SWT по умолчанию в Mac OS X. В Linux это браузер по умолчанию as of SWT 3.7 (который находится только на ранних стадиях). Вы можете заставить SWT использовать WebKit, передав системное свойство
org.eclipse.swt.browser.UseWebKitGTK
как истинное, если у вас есть SWT 3.6.0+. В Windows есть порт WebKitGTK + от GenuiTec, который может быть found here.
В заключение, двигатель SVG XULRunner легче работать, поскольку его поддержка шире. Вы можете создать пакет «все-в-одном» вашего приложения (комплект XULRunner) для любой платформы. Я лично не рекомендую SWT WebKit от Genuitec для Windows, так как он недостаточно зрелый.
Я начал искать решение для рендеринга SVG для своего приложения Java и в итоге использовал PNGTranscoder от Batik. Это требует немного больше работы перед началом работы, но для меня лучше было просто отобразить все SVG-файлы в PNG, как только я узнал, в каком размере мне нужно все, чтобы быть. Я знаю, что это не то, что вы хотите, но я думаю, что экономия времени повторного рендеринга (особенно для сложных SVG) значительна, я думаю. Конечно, это не поможет, если вы хотите управлять элементами SVG в режиме реального времени. Если хотите, я могу опубликовать фрагмент кода. Я потратил некоторое время на то, чтобы все это понять :) –