IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

Faire une carte et se déplacer dans celle-ci.


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 13
    Par défaut Faire une carte et se déplacer dans celle-ci.
    Bonjour,
    Voila çe que je voudrais faire : une carte, 2D (pas une carte à jouer, mais la cartographie d'une surface).
    Cette carte est trop grande pour l'écran, donc je pensais utiliser le principe d'une "mini map" dans un coin pour pouvoir naviguer.

    Ma question est la suivante : je suis pas un habitué de la création d'interfaces graphique, il existe sûrement des méthodes pour faire ce que je voudrais...


    C'est le problème (assez courrant) du tore, les bords droit et gauche se rejoingnent, de même pour les bords hauts et bas.

    Le première idée qui me vient c'est de créer un grand Canvas , et de dessiner, dans le canvas de l'objet graphique lui-même, une region du Canvas de départ, et pour gérer le tore assembler les morceaux du canvas de départ.


    Je voulais vos avis pour savoir si je part dans la bonne direction ou si la méthode n'est pas bonne... ?


    Merci d'avance

  2. #2
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Bonjour,

    Je ne certifie pas ma réponse comme idéale étant donné que je ne l'ai jamais mise en pratique. Mais pour y avoir déjà réfléchi, j'aurai opté pour un canvas ou tout autre composant graphique avec JScrollPane, qui résout le problème de taille :
    - A l'écran, ce serait la carte qui semblerait bouger, le perso resterait au centre de l'écran.
    - JScrollBar disabled et déplacées manuellement.
    - ...

    Pour la minimap, un simple MouseEvent sur une image avec formule pour convertir X et Y à la grande carte...

    C'est un peu confus, si tu ne vois pas ce que je veux dire, dis moi quoi.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 13
    Par défaut
    Merci pour ta réponse

    La mini map ne pose pas vraiement de problème, c'est plutôt la gestion du tore qui me pose problème... comment gérer les recouvrements ?

    Dans le cas général tout vas bien, il suffit d'afficher une région du canvas.
    Mais pour les recouvrements je suis pas sûr de moi, si on prends le "pire" cas c'est le recouvrement des quatres coins.
    Est-ce que découper puis coller des régions de l'image pour la reconstituer est une bonne solution ?

    (Les composants "scrollables" ne permettent pas de gérer un tore, c'est pour ça que j'ai exclue ces solutions)

  4. #4
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Ha oui d'accord. Donc si j'ai bien compris, tu souhaites créer une "planète" mais dont la carte serait "infinie" ? C'est à dire, tu préfères réafficher l'autre bord plutôt que de replacer le perso au début ?

    Si c'est bien le cas, là, je ne vois pas. Désolé.
    Ou alors il existerait bien une astuce mais qui "triche" :
    Créer la map et la recopier (sur chacun de ses bords mais pas forcément en entier) de cette façon :
    NO N NE
    O C E
    SO S SE

    Ensuite, déplacer effectivement le perso mais semblant de rien :
    ex : s'il va de C vers E, le replacer à l'entrée de O vers C...
    Humm.... Solution barbare, je te l'accorde.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    56
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 56
    Par défaut
    Elle est de quelle taille ta grande carte ?
    Si elle n'est pas démesurément grande l'idéal est de la peindre dans une image non affichée.
    Ensuite pour faire ta mini map tu utilise un canvas tout simple, tu surcharge le paint pendant lequel tu fais des copies de la portion de carte dans laquelle tu te situe vers le GC du canvas.
    N'oublie pas desactiver la peinture du background ainsi que "RESIZE_REPAINT"...et tu va obtenir un magnifique affichage ultrafluide et hyper rapide.

Discussions similaires

  1. faire une croix sur les pics dans une figure
    Par jena dans le forum Signal
    Réponses: 5
    Dernier message: 28/11/2008, 18h04
  2. [Tableaux] faire une sorte de requete COUNT() dans un array
    Par mdr_cedrick dans le forum Langage
    Réponses: 4
    Dernier message: 01/04/2008, 11h49
  3. [CS3] comment faire une carte géographique dynamique
    Par ianstone dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 17/03/2008, 16h37
  4. Réponses: 1
    Dernier message: 13/12/2006, 09h04
  5. Faire une copie de ma BD dans le meme seveur sous un nom dif
    Par nisso dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 01/03/2006, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo