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

Interfaces Graphiques en Java Discussion :

impression de container, besoin d'infos.


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 110
    Points
    110
    Par défaut impression de container, besoin d'infos.
    bonjour,

    J'ai utiliser la fonction qui est dans la FAQ qui imprime le contenu d'un container tel qu'il est représenter graphiquement.
    Aussi comment faire pour que le container respecte un format A4 au moment de l'impression papier ?
    ou
    Comment faire pour dimensionner un container sans modification graphique sur l'écran de mon ordi et que sa représentation graphique papier respecte le format A4 ?

    Merci d'avance pour vos réponses, a+

  2. #2
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 110
    Points
    110
    Par défaut
    J'arrive maintenant à manipuler le rendu papier grace à l'utilisation d'un Graphics2D g2d. Enfait je scale mon image écran de sorte à ce que celle-ci rentre dans le format détermineé. Voici le code pour ceux que ça intéresses.

    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
     public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
        if (pageIndex > 0) {
          return(NO_SUCH_PAGE);
        } else {
          Graphics2D g2d = (Graphics2D)g;
     
     
          disableDoubleBuffering(componentToBePrinted);
          GridBagLayout gbl = ((GridBagLayout)((Container)componentToBePrinted).getLayout());
          double x = gbl.getLayoutOrigin().getX();
          double y = gbl.getLayoutOrigin().getY();
          double scalex = pageFormat.getImageableWidth()/(componentToBePrinted.getWidth() - 2*x);
          double scaley = pageFormat.getImageableHeight()/(componentToBePrinted.getHeight() - 2*y);
     
          int clipX = ((int)(((int)x - 2)*scalex));
          int clipY = ((int)(((int)y - 2)*scaley));
          int clipWidth = (int)((componentToBePrinted.getWidth() - 2*x + 16)*scalex) + 1;
          int clipHeight = (int)((componentToBePrinted.getHeight() - 2*y + 8)*scaley) + 1;
     
          g2d.setClip(clipX, clipY, clipWidth, clipHeight);
          g2d.scale(scalex,scaley);
     
        ((Container)componentToBePrinted).paintComponents(g2d);
          enableDoubleBuffering(componentToBePrinted);
          return(PAGE_EXISTS);
        }
      }
    Problème : dès que je redimensionne mon écran des marges se crées a cause du layout (gridBag) de ce container. Et avec la méthode ci dessus les marges apparaissent quand même. Ce qui fait que mon rendu papier reste dépendant de mon rendu ecran, à cause de ces marges.
    Je pense qu'une transformation pourrait venir à mon secours dans ce cas .
    Mais la j'ai un peu de mal, il me faut une matrice de transformation qui fait une translation de -x sur toutes les abscisses de mes composants et -y sur les ordonnées.
    Help please, je poste dés j'ai du nouveau, A+

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 122
    Points : 110
    Points
    110
    Par défaut
    ouf, je pense que j'ai enfin réussi a créer cette fonction pour ce que ça intéresses voici le code de l'implémentation de la fonction print de l'interface Printable:

    A partir du rendu moniteur d'un container créer un impression A4 de ce container en se basant sur des transformation graphique de ce container.

    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
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
        if (pageIndex > 0) {
          return(NO_SUCH_PAGE);
        } else {
          Graphics2D g2d = (Graphics2D)g;
     
     
          disableDoubleBuffering(componentToBePrinted);
          GridBagLayout gbl = ((GridBagLayout)((Container)componentToBePrinted).getLayout());
          double x = gbl.getLayoutOrigin().getX();
          double y = gbl.getLayoutOrigin().getY();
          double scalex = pageFormat.getImageableWidth()/(componentToBePrinted.getWidth() - 2*x);
          double scaley = pageFormat.getImageableHeight()/(componentToBePrinted.getHeight() - 2*y);
     
     
          g2d.translate(pageFormat.getImageableX() -x*scalex, pageFormat.getImageableY() -y*scaley);
          g2d.scale(scalex,scaley);
     
        ((Container)componentToBePrinted).paintComponents(g2d);
          enableDoubleBuffering(componentToBePrinted);
          return(PAGE_EXISTS);
     
     
     
     
     
        }
      }

  4. #4
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 18
    Points : 10
    Points
    10
    Par défaut
    Un grand merci pour avoir poster ce bout de code...c'est exactement ce que je cherchais...

    Vraiment merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/08/2007, 15h40
  2. Besoin d'info sur AWStats
    Par Khrysby dans le forum Statistiques
    Réponses: 1
    Dernier message: 02/11/2005, 16h05
  3. [optimiseur CBO]besoin d'infos
    Par seal dans le forum Oracle
    Réponses: 1
    Dernier message: 29/09/2005, 15h14
  4. nouvel utilisateur besoin d'info
    Par toure32 dans le forum CORBA
    Réponses: 1
    Dernier message: 28/08/2005, 16h20

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