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

GTK+ avec C & C++ Discussion :

imprimer une drawing area


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2010
    Messages : 85
    Par défaut imprimer une drawing area
    Bonjour, je souhaiterais imprimer le contenu d'une drawing area j'ai fait :

    déclenche avec void impression
    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
     
    void impression(void){
        GtkPrintOperation *print;
        GtkPrintOperationResult res;
        print = gtk_print_operation_new ();
        GtkPrintSettings *settings = gtk_print_settings_new();
     
     
        GtkPageSetup *setup = gtk_page_setup_new();
        gtk_print_settings_set_resolution(settings, 100);//100 dpi
     
        gtk_page_setup_set_orientation(setup, GTK_PAGE_ORIENTATION_LANDSCAPE);
        gtk_page_setup_set_top_margin(setup, 15,GTK_UNIT_MM);
        gtk_page_setup_set_left_margin(setup, 15,GTK_UNIT_MM);
     
        gtk_print_operation_set_default_page_setup(print, setup);
        gtk_print_operation_set_print_settings(print,settings);
     
     
        if (settings != NULL)
            gtk_print_operation_set_print_settings (print, settings);
        g_signal_connect (print, "begin_print", G_CALLBACK (begin_print), NULL);
        g_signal_connect (print, "draw_page", G_CALLBACK (draw_page), NULL);
        res = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW (getWidget("fenetre")), NULL);
        if (res == GTK_PRINT_OPERATION_RESULT_APPLY)
        {
            if (settings != NULL) g_object_unref (settings);
            settings = g_object_ref (gtk_print_operation_get_print_settings (print));
        }
        g_object_unref (print);
    }
     
    void begin_print(GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data)
    {
        gtk_print_operation_set_n_pages (operation,1);
    }
     
    void draw_page(GtkPrintOperation *operation, GtkPrintContext *context, gint page_nr, gpointer user_data)
    {
        printf("impression en cours\n");
        GdkPixmap* pix = gtk_widget_get_snapshot(getWidget("sortie"), NULL); //getWidget("sortie") = ma drawing area
     
        cairo_t* crp = gtk_print_context_get_cairo_context (context);
        gdk_cairo_set_source_pixmap(crp,pix,0,0);
     
        g_object_unref( pix );
     
        //destroy crp quelque part ???
    }
    ça ne marche pas évidemment...

    Quelqu'un a t'il déjà résolu ce problème ??

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2010
    Messages : 85
    Par défaut
    Quel C...

    Il faut bien sûr rajouter cairo_paint(crp) après le set_source_pixmap...

    reste des problèmes d'échelle à régler.
    Quelqu'un sait-il comment mettre une échelle pourque le dessin tienne sur la feuille.

    le set_resolution pour PrintSettings ne change rien.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/09/2010, 11h26
  2. changer position x,y d'une drawing area
    Par pffff dans le forum GTK+
    Réponses: 5
    Dernier message: 30/04/2010, 10h24
  3. Comment sauvegarder le contenu d'une drawing area ?
    Par khorhil dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 18/06/2009, 14h40
  4. Texte dans une Drawing area - Pango
    Par Bertrand_g dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 20/03/2008, 14h24
  5. Dessiner sur une drawing area
    Par Fibus dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 19/12/2007, 16h57

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