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 :

Signature d'un utilisateur à la souris


Sujet :

2D Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut Signature d'un utilisateur à la souris
    Bonjour,
    Je fais partie de l'équipe d'un projet sur une interface assez spéciale et on aurait besoin de récupérer la signature d'un utilisateur, à la souris
    Est-ce que vous auriez des idées ???
    Je pensais faire un truc genre le truc dispo sur Live Messenger...
    Merci par avance de vos réponses
    Pierre

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 111
    Par défaut
    Signature a la souris...

    faire une sorte de panneau de dessin et enregistrer les pixels noires

    quand a l'identifer apres....
    une zone buffer autour de ses points et une comparaison.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 37
    Par défaut
    Seule l'acquisition de l'image et son affichage sous le curseur, en temps "réel" nous intéresse, pas de reconnaissance à faire...
    ça simplifie le truc mais je ne suis pas super doué au niveau dessin en java...

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.awt.image.*;
    import javax.swing.*;
    import javax.swing.event.*;
     
     
    Public class SignaturePanel extends JPanel {
      /** Default width.
       */
      public static final int DEFAULT_WIDTH = 320;
     
      /** Default height.
       */
      public static final int DEFAULT_HEIGHT = 200;
     
      /** Default radius for the pen tip.
       */
      public static final int DEFAULT_RADIUS = 10;
     
      /** Signature image.
       * @todo make a getter for it ; maybe return a copy of this image.
       */
      private BufferedImage image = new BufferedImage(DEFAULT_WIDTH, DEFAULT_HEIGHT, BufferedImage.TYPE_INT_RGB);
     
       /** The dot (pen tip) shape.
        */
      private Ellipse2D dot = new Ellipse2D.Float(-DEFAULT_RADIUS, -DEFAULT_RADIUS, DEFAULT_RADIUS*2, DEFAULT_RADIUS*2);
     
       /** Paint/color of the ink to be used.
       */
      private Paint ink = Color.BLACK;
     
      /** Listen to the mouse.
      */
      private InnerListener innerListener = new InnerListener();
     
      /** Creates a new instance.
       */
      public SignaturePanel() {
        super();
        // Make a white image.
        Graphics2D g = image.createGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, DEFAULT_WIDTH, DEFAULT_HEIGHT);
        g.dispose();
        // Try to make this panel non-resizable.
        Dimension size = new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        setMinimumSize(size);
        setMaximumSize(size);
        setPreferredSize(size);
        setSize(size);
        // Self listen to mouse events.
        addMouseListener(innerListener);
        addMouseMotionListener(innerListener);
      }
     
      /** {@inheritDoc}
       */
      @Override protected void paintComponent(Graphics g) {
        // Draw image onscreen.
        g.drawImage(image, 0, 0, null);
      }
     
      /** Draw point at current location, with current ink and dot.
       * <br>Does nothing if out of the image (+some margin to let the pen draw on the borders).
       */
      private drawPoint(int x, int y) {
        if ((x > -DEFAULT_RADIUS) && (x < DEFAULT_WIDTH+DEFAULT_RADIUS) && (y > -DEFAULT_RADIUS ) && ( y < DEFAULT_HEIGHT+DEFAULT_RADIUS)) {
           Graphics2D g = image.createGraphics();
           g.setRenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
           g.setPaint(ink);
           g.fill(dot);
           g.dispose();
        }
      }
     
      /** Inner listener for mouse events.
       */
      private class InnerListener implements MouseInputListener {
        /** {@inheritDoc}
        */
        public void mouseClicked(MouseEvent event) {
          drawPoint(event.getX(), event.getY());
          repaint();
        }
     
        /** {@inheritDoc}
        */
        public void mouseDragged(MouseEvent event) {
          drawPoint(event.getX(), event.getY());
          repaint();
        }
      }
    }
    Sinon parmis les ameliorations :
    - utiliser une forme non-reguliere pour la pointe du stylo (une pointe de stylo qui se deplace donne plutot une forme de goutte d'eau).
    - detecter l'orientation et la vitesse du trace et adapter l'orientation et la forme de la pointe du stylo celon (pour simuler un vrai trace ecris).
    - utiliser un Paint plus complexe que la simple couleur noire (un beau GradientPaint noir->gris sombre ca peut faire joli, sinon utiliser une TexturePaint pour simuler le grain du papier).
    - trouver un moyen de simuler/detecter la pression (histoire de faire varier la quantite d'encre et donc de rendre la signature de maniere appropriee : par exemple en utilisant une AlphaComposite +/- transparente et/ou en faisant varier la taille de la pointe via une AffineTransform dans drawPoint() quand on dessine la forme de la pointe du stylo).
    ...

    Bon TP ou projet !
    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

Discussions similaires

  1. Simuler évènements utilisateur (clic souris, entrée clavier)
    Par _vince_ dans le forum Bibliothèques tierces
    Réponses: 5
    Dernier message: 28/11/2011, 18h44
  2. Réponses: 1
    Dernier message: 20/11/2010, 11h11
  3. Réponses: 0
    Dernier message: 21/05/2010, 20h45
  4. Réponses: 0
    Dernier message: 21/05/2010, 20h39
  5. Souris invisible pour l'utilisateur
    Par tusssss dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 25/06/2008, 15h52

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