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 :

Imprimer le contenu graphique d'une shell


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Par défaut Imprimer le contenu graphique d'une shell
    Bonjour,

    J'ai codé une shell avec une barre de menu. Grâce à cette barre de menu, on doit pouvoir imprimer le contenu de cette shell. (Successions de graphes)

    Après pas mal de recherche sur le net, j'ai compris qu'il fallait utiliser une PrintDialog, voici l' exemple que j'ai utilisé :

    (http://dev.eclipse.org/viewcvs/index...2.java?view=co)

    Voici mon code :

    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
     
    	parent = newView.getSite().getShell();
    	printDialog = new PrintDialog(parent);
            PrinterData printerData = printDialog.open();
     
            if (!(printerData == null)) {
              Printer printer = new Printer(printerData);
     
              printer.startJob("PrintJob");
              printer.startPage();
              Rectangle trim = printer.computeTrim(0, 0, 0, 0);
              Point dpi = printer.getDPI();
              int leftMargin = dpi.x + trim.x;
              int topMargin = dpi.y / 2 + trim.y;
              GC gc = new GC(printer);
              Font font = gc.getFont();
     
              //String printText = "Test d'impression depuis mon appli";
              //Point extent = gc.stringExtent(printText);
     
              //gc.drawString(printText, leftMargin, topMargin
              //    + font.getFontData()[0].getHeight());
     
     
              printer.endPage();
              gc.dispose();
              printer.endJob();
              printer.dispose();
              parent.open();
    j'ai réussi à imprimer du texte, mais pas je n'arrive pas à imprimer le contenu de ma fenêtre. Est-ce que quelqu'un à une idée ?

  2. #2
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par défaut
    Salut,

    En regardant ton code, c'est un peu normal qu'il n'y ait que du texte dans l'impression car dans le GC que tu imprimes, tu écrits du texte.

    Pour imprimer le contenu de ta Shell tu peux en faire une image et la copier dans le GC en charge de l'impression.

    Dans la version Eclipse 3.4M5 tu peux maintenant imprimer le contenu d'un control dans un GC

    Va voir l'exemple donné ici

    Il te faut par contre la version Eclipse 3.4 M6

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  3. #3
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Par défaut
    Merci Mickael pour ta réponse clair et ultra rapide, je ne peux pas passer à la version 3.4 d'Eclipse, volonté du client oblige !

    J'ai donc suivie l'autre piste et rajouté à mon code les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    GC gc = new GC(display);
    final Image image = new Image(display, display.getBounds());
    gc.copyArea(image, 0, 0);
    GC gcPrint = new GC(printer);
    gcPrint.drawImage(image, leftMargin, topMargin);
    Je fais en fait une impression de l'écran et derrière j'imprime l'image créer.

    Cependant, ce n'est pas tout à fait cela que je souhaiterai faire dans le cadre de mon application.

    J'ai pas tout dis aussi, je vais essayer d'être plus précis

    Je suis en train développer une appli en Eclipse RCP, j'ai un workbench contenant des views. L'une de ces view possède un menu, à partir de ce menu, je dois pouvoir imprimer le contenu de la view

    Le problème, c'est que là ce n'est pas la vue elle même que je print, mais l'intégralité de mon écran.

    Comment puis-je faire pour copier l'image qui m'intéresse à savoir le contenu de la vue ?

    Nico

  4. #4
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par défaut
    La vue contient bien un conteneur de type Composite. Il s'agit de ton point de départ.

    Ensuite, à partir de ce composite il faut en générer une image.

    Plusieurs solutions:
    Première solution : il te faut récupérer le GC de ton composite et à partir de là tu pourras utiliser la méthode copyArea pour copier une zone rectangulaire dans une image.

    Seconde solution : pour générer l'image, d'un composite et sachant que tu ne peux pas passer sous Eclipse 3.4, tu peux éventuellement réutiliser le code proposé dans 3.4.

    Par contre, tu devras prévoir selon si tu te trouves sous Windows, MAC ou Linux.

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  5. #5
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Par défaut
    J'ai peut être trouvé une API qui pourrait t'intéresser

    ça s'appelle PaperClips, va voir ici

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 23
    Par défaut
    Merci beaucoup, je vais y jeter un oeil dès ce soir

Discussions similaires

  1. [C#] Imprimer le contenu d'une fenêtre avec ascenseur
    Par biglong dans le forum Windows Forms
    Réponses: 6
    Dernier message: 06/08/2007, 23h29
  2. [impression] imprimer le contenu d'une url
    Par FFF dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 30/11/2005, 15h07
  3. Réponses: 6
    Dernier message: 29/07/2005, 11h12
  4. imprimer le contenu d'une TPaintBox
    Par stimbo dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/03/2004, 19h42
  5. [Kylix] Imprimer le contenu d'une boîte de dialogue
    Par cmp-france dans le forum EDI
    Réponses: 13
    Dernier message: 18/10/2003, 20h31

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