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

2D Java Discussion :

[Composant] Vu d'oiseau


Sujet :

2D Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de schneidb
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 236
    Par défaut [Composant] Vu d'oiseau
    Bonjour,

    Savez vous s'il existe un composant tout fait qui prenderai une zone de dessin. et l'afficherait en petit. L'interet est que lorsque le dessin devient grand, on puisse de déplacer facilement sur cette vue d'oiseau (birdview).

    Sinon le cas échéant, avez vous des pistes: passer par une buffer image... ?

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,
    la comme ça, je ne sais pas trop si il faut passer par une BufferedImage, mais tu ne couperas pas à l'AffineTransform. En l'utilisant avec Graphics2D.transform(), ce ne sera peut etre pas nécéssaire de passer par une Image.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre expérimenté Avatar de schneidb
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 236
    Par défaut
    merci pour ta réponse, je vais essayer de faire quelque chose, et mettrais le code si j'obtiens un composant correct.

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Je ne connais pas le contexte de ton composant, mais je ferais quelque chose du genre :
    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
    public class MonComposant extends ... {
     
      boolean vueDOiseau;
      double zoomx, zoomy; //les zooms inversés, genre 1/2 ou 1/4
    ...
     
      public void paint(Graphics g) {
        if(vueDOiseau && ! (g instanceof Graphics2D))
          return;
     
        if(vueDOiseau) {
           ((Graphics2D)g).transform(AffineTransform.getScaleInstance(zoomx, zoomy));
        }
     
        ...//le reste de paint
     
        if(vueDOiseau) {
          ((Graphics2D)g).transform(AffineTransform.getScaleInstance(1/zoomx, 1/zoomy));
        }
      }
    }
    A tester, bien sur.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre expérimenté Avatar de schneidb
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 236
    Par défaut
    Merci de ton aide, je pense effectivement faire un composant redéfinit de cette manière qui étend un JPanel ou un JComponent.

    Je me pose à présent quelques questions. Vu que je crée un composant à part qui va représenter ma vue d'oiseau. Il va falloir un lien entre le composant qu'il représente (dans mon cas un desktopPane).


    1. Créer la bufferImage du desktopPane OK
    2. L'afficher dans le birdview (facile) a faire
    3. Choisir un fréquence d'actualisation c'est la que je coince, j'ai peur que créer trop souvent des bufferImage ralentisse tout l'appli.

    Solution
    à chaque repaint du desktopPane j'envoie la bufferImage (bourrin)
    à chaque action significative de l'utilisateur, clic sur une boite, création, suppression... (plus propre je pense)

    Vu que le birdview est une réduction d'au moins 1/2, 1/3. Je pense qu'en cherchant un peu c'est possible, mais peut-on accélérer le processus de réduction de la bufferImage en rognant un peu la compression, demandant une accèlération matérielle?

    4. créer un petit composant du type curseur que l'on bouge sur le birdView et qui bouge le scrollPane (annexe)

    merci d'avance

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/06/2002, 00h15
  2. Existe t'il un composant permettant de jouer un son wav?
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/06/2002, 14h10
  3. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10
  4. Installer ses composants
    Par Geronimo dans le forum C++Builder
    Réponses: 14
    Dernier message: 18/06/2002, 14h51
  5. Re-dimensionnement automatique de composants
    Par ludo_7 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/05/2002, 16h35

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