Bonjour à tous,
Mon souhait est de pouvoir visualiser des images au format SVG dans une ViewPart et donc dans un composite SWT.
Pour ce faire, j'utilise le plug-in J2D4SWT qui permet d'afficher du svg dans swt avec Batik(Batik étant implémenté à l'origine pour Swing) et voici le problème:
Si je crée uniquement un composite dans la vue et que j'essaie de charger une grande image dedans, l'image est tronquée (impossible de scroller)
Voici le code :Et voici un screenshot du résultat de ce code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 final Composite contenu = new Composite(parent, SWT.NONE); FillLayout fillLayout = new FillLayout(SWT.VERTICAL); contenu2.setLayout(fillLayout); File fichier = new File(getNomFichier()); String urlFichier = null; try { urlFichier = fichier.toURL().toString(); } catch (MalformedURLException e1) { e1.printStackTrace(); } final SimpleSVGCanvas SVGViewer = new SimpleSVGCanvas(contenu2, urlFichier); contenu2.setSize(contenu2.computeSize(SWT.MAX, SWT.MAX));
Comme vous pouvez le voir l'image n'est pas visible en entier et aucune scrollbar n'est présente.
J'ai alors essayé d'utiliser un ScrolledComposite qui contiendrait un Composite simple. J'ai alors une scrollBar mais lorsque je scrolle la vue l'image la partie non visible(avant de scroller) est noire.
Voici le code:
Et ce code donne ce résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 final ScrolledComposite scrollComp = new ScrolledComposite(parent, SWT.H_SCROLL | SWT.V_SCROLL); final Composite comp = new Composite(scrollComp , SWT.NONE); scrollComp .setContent(comp); scrollComp .setAlwaysShowScrollBars(true); FillLayout fillLayout = new FillLayout(SWT.VERTICAL); comp.setLayout(fillLayout); File fichier = new File(getNomFichier()); String urlFichier = null; try { urlFichier = fichier.toURL().toString(); } catch (MalformedURLException e1) { e1.printStackTrace(); } final SimpleSVGCanvas SVGViewer = new SimpleSVGCanvas(contenu2, urlFichier); contenu2.setSize(comp.computeSize(SWT.MAX, SWT.MAX));
Vous voyez, lorsque je scrolle, on voit que l'image n'est pas chargée complêtement.
J'ai essayé de rafraîchir les composite et le SVGViewer lors de l'événement de sélection de la scrollBar mais rien n'y fait.
Si quelqu'un à une idée, merci de m'en faire part, je commence à désespérer
Partager