Laquelle des 3 ?
Laquelle des 3 ?
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Je vais la dessiner en utilisant AWT et/ou SWING. Mais avant, j'ai un problème de redimensionnement. En effet, je veux que cette interface contient ce terrain de 28 cm/15 peu importe les résolutions de l'écran et quelque soit la plate-forme. J'ai choisi cette échelle de 28 cm/15 car elle convient bien avec la taille réelle d'un terrain de basket-ball FIBA (~28 m /15). Quelqu'un peut m'aider à établir cette méthode de redimmensionnement du pixel vers le cm pour tout le terrain? En plus, je vais implémenté à droite et à gauche, au dessus et au dessous du terrain divers types de composants (boutons, scrollbars, checkbox,...), je m'interroge si cette interface sera toujours d'une taille convenable ou non? Dois-je utiliser une fenetre qui permettra la fonction d'aggrandissement ou bien une fenetre de taille fixe?
Excusez-moi pour ces questions là Que dois-je faire, je suis débutant et j'espère bien que je m'améliore
Merci
Ca n'a aucun sens de parler de centimètre pour l'affichage sur un écran. Comme cela a déjà été dit, il faut plutôt parler de proportions. La hauteur du terrain est fonction de sa largeur, et inversement.
Le dessin du terrain se fera en fonction de sa largeur, ou de sa hauteur, mais pas des deux : tu conserveras donc la proportionnalité.
Pour la gestion de la taille du composant, il faudra toujours conserver la même proportion entre la largeur et la longueur.
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Que la force de la puissance soit avec le courage de ta sagesse.
Salut à tous!
Sinok, Bouye, comme vous m'avez conseillé je vais importer une image SVG (déjà faite). A cette image, j'ai dessiné des petites zones qui seront ensuite programmées avec des menus Popup. Est-ce que ça est permis? Et quelle est la méthode d'importation la plus simple, celle de Batik ou celle de Kirill Grouchnikov's?
Batik te permettra de dessiner ton terrain dans un Graphics, le convertisseur de Kiril convertira le fichier SVG en du code Java2D qui se dessine dans un Graphics également (le convertisseur lui-même repose sur Batik mais les classe produites par le convertisseur de Kiril étendent Icon et utilisent uniquement du code Java2D, elles peuvent donc utilisées complètement indépendament de Batik une fois générées).
Dans les deux cas tu auras un rendu mais aucun interraction possible avec les zones définies dans le SVG.
Batik : Il faudra alors essayer d'utiliser l'API de Batik plus en avant pour essayer de faire une correlation entre ce qui est rendu et le contenu du DOM XML.
Je n'ai jamais essayé, mais si ça se trouve Batik permet de le faire.
Par contre si tu dois le faire toi-même, ca peut être éventuellement un poil compliqué (surtout si ton éditeur SVG s'amuse à appliquer des transormations à tes formes ; ce que fait Inkscape par exemple).
Convertisseur de Kirill : sinon vu que le code source du convertisseur de Kirill est dispo, il est possible de le modifier pour créer des variables de type Shape nommées comme, par exemple, les formes présentes dans le SVG, histoire de conserver des références dessus (ce qu'il ne fait pas par défaut).
Concernant le convertisseur même, quand je l'avais récupéré (août dernier) il n'y avait pas de support du texte et des fonts et j'avais du le rajouter moi-même ; de plus si le SVG est très complexe il peut générer une classe très grosse que le compilateur Java refusera de compiler (apparement un fichier de code source ne peut pas dépacer une certaine taille en Ko), si ca arrive, il faut simplifier le SVG.
Coté JavaFX c'est différent, tu récupères bien des noeuds nommées qui correspondent aux formes défines dans le SVG (si elles ont été nommées correctement, voir mes propositions de Q/R pour la future FAQ) et sur lesquelles on peut placer des closures habituelles de la classe Node (onMouseEntered, onMouseClicked, etc...) pour gérer des évènement.
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Salut Bouye;
Je te remercie beaucoup pour tes réponses Bouye, comme j'ai déjà dit au début je suis très débutant en ce qui concerne GUI Java. J'espère que tu m'indiques de quoi dois-je disposer essentiellement pour faire cette importation de cette image sachant que j'ai utilisé Inkscape pour la dessiner et téléchargé batik 1.7. Pour la nommation des noeuds à l'image SVG, qui seront programmés, comment dois-je procéder ?
Merci infiniment!
Dans Inkscape ?
- Bouton de droite sur une forme puis "Object Properties" et donne une "Id" et cliquer sur "Set".
- Edit->XML EDitor..., cliquer sur le noeud avec la souris devrait selectionner le tag XML equivalent dans l'editeur. Cliquer sur le champs "id", saisir une valeur dans la grande zone de texte en dessous puis cliquer sur "Set". On peut nommer des calques de la meme maniere (si on essai de les nommer via le gestionnaire de calque, cela ne change que leur champs "label" en fait).
Apres par contre dans Batik........................................ ?
Pour le convertisseur de Kiril, voir https://flamingo.dev.java.net/source.../flamingo/svg/ et plus precisement SvgBaseTranscoder et SvgStreamTranscoder
Apparement pas mal de classes ont change depuis que je l'avais recupere. D'un cote c'est plus propres mais pas forcement plus lisible.
Bon, bref a un moment il appelle la methode public void transcode(GraphicsNode gvtRoot) qui appelle elle-meme des methodes comme private void transcodeGraphicsNode(GraphicsNode node, String comment) et des tas d'autres plus specialisees... pour creer le code Java2D equivalent au code SVG. A voir si ces elements Batik ne permettent pas de recuperer les attributs (tels que l'ID ou le nom) stockes dans leur noeuds equivalents dans le XML/SVG. Apres il faudra modifier le code source genere pour faire des trucs du genre :
De toute maniere mieux vaut faire tourner le convertisseur au moins une fois tel quel pour voir quel type de code il genere.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 String name = ... // Au niveau global. out.println("private Shape "+name+" = null;"); // Au niveau local dans le code de rendu. out.println("if ("+name+" == null) {"); out.println("\t"+name+" = "+............ // code actuellement genere par le convertisseur avec eventuellement l'application des transformations. out.println("}"); out.println("if (fillPaint != null) {"); out.println("\tg2d.fill("+name+");"); out.println("}"); out.println("if (strokePaint!= null) {"); out.println("\tg2d.draw("+name+");"); out.println("}");
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Il faut connaitre le ratio "dot per inch" de la résolution affichée.
Cf: http://www.developpez.net/forums/d70...a/#post4087460
Toujours concernant la manipulation des SVG, voir https://svgsalamander.dev.java.net/ meme si ce projet ne semble plus etre maintenu.
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Bouye ;
J'apprécie bien tes réponses et ton aide
Mais, vu que je suis extremement débutant en Java , au graphisme et à ce genre de conversion et d'importation, ça me semble encore vague et complique
Je te demande gentillement, de me montrer la démarche basique de l'importation de cette image SVG qui contient des petites cercles qui seront ensuite programmables en Java par des menus Popups. Comme j'ai déjà compris il faut d'abord nommer ces cercles (noeuds) en Inkscape et que seulement JavaFX me permet de faire ce type de conversion
Ensuite ?
J'espère bien que tu me répondes de la manière la plus simplifiée et basique possible
Merci infiniment à toi
NB: J'utilise JBuilder comme IDE Java
Binôme_pfe, tu es très gentil, très poli, mais on ne peut faire ton travail à ta place.
Si tu veux développer, la meilleure solution est d'apprendre ce dont tu as besoin et de faire évoluer les développements avec tes connaissances. Il n'est pas possible de développer un logiciel complexe sans un minimum de bases.
JavaFX peut faire une telle conversion et permet de manipuler TRES facilement le contenu du fichier, mais cela produit du code JavaFX qui n'est donc pas ce que tu veux dans ton programme Java (et il est sans doute trop tard pour recommencer a zero).
Le plus simple pour comprendre est de faire tourner le convertisseur de Kirill en mode deboggage avec des break points bien places et de voir ce qui se passe lorsque que tel ou tel noeud de Batik est rencontre. Avoir les sources de Batik peut aider egalement pour voir s'il est possible eventuellement d'extraire des infos venant des tags du SVG a partir des objets graphiques fournis par Batik
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager