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 :

[Gtk+] ouvrire une image et zoom


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 16
    Par défaut [Gtk+] ouvrire une image et zoom
    Salut
    je developpe un programme de manipulaton d'image
    mais je n'arrive pas a ouvrir une image dont son chemin est tapé dans un gtk-entry
    voici mon code:
    filefunc.h
    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
     
    #ifndef FILEFUNC_H_INCLUDED
    #define FILEFUNC_H_INCLUDED
    #define  pButton btimg
     
    #include "menu.c"
    #include "filefunc.c"
        GtkWidget *Window;
        GtkWidget *afimg;
        GtkWidget* hbox;
        GtkWidget* hbox1;
        GtkWidget* vbox1;
         GtkWidget*mb;
     GtkWidget*menui;
     GtkWidget*sm;
     const gchar *pathfe;
     
        GtkWidget* btop;
        GdkPixbuf* image;
        void create_menu();
        void quite (GtkWidget *widget, gpointer window);
    void open (void);
    void zoomp(void);
    void OnDestroy(GtkWidget *pWidget, gpointer pData);
    void openimg(void);
    void gettext(GtkEntry *entry, gpointer user_data);
     
    #endif // FILEFUNC_H_INCLUDED
    filefunc.c
    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
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #include "filefunc.h"
     
    #include <gdk-pixbuf/gdk-pixbuf.h>
        GtkWidget *Window;
        GtkWidget *afimg;
     
        GtkWidget* table1;
     
        GtkWidget* vbox;
    GtkWidget*sm;
     
    GtkWidget *dialog;
     GtkWidget *pathf;
     const gchar *pathfe[1000];
    GtkWidget* btimg[4];
    GdkPixbuf* image;
    GtkWidget *file;
    GtkWidget *op;
    GtkWidget *save;
    GtkWidget *opw;
    GtkWidget *quit;
    GtkWidget*mb;
    GtkWidget *filemenu;
    void OnDestroy(GtkWidget *pWidget, gpointer pData)
    {
        /* Arret de la boucle evenementielle */
        gtk_main_quit();
    }
    void quite (GtkWidget *widget, gpointer window){
        GtkWidget *dialog;
     
     dialog = gtk_message_dialog_new(GTK_WINDOW(Window),
                GTK_DIALOG_DESTROY_WITH_PARENT,
                GTK_MESSAGE_QUESTION,
                GTK_BUTTONS_YES_NO,
                "Voulez vraiment quitter ?");
                  gtk_window_set_title(GTK_WINDOW(dialog), "Quitter");
      gtk_dialog_run(GTK_DIALOG(dialog));
      gtk_widget_destroy(dialog);
     
    }
     
    void open (void){
     
     pathf = gtk_entry_new();
     dialog = gtk_dialog_new_with_buttons("Ouvrire", GTK_WINDOW(Window), GTK_DIALOG_MODAL, GTK_STOCK_OK,GTK_RESPONSE_OK,GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,NULL);
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), pathf, TRUE, FALSE, 0);
     
     
    gtk_widget_show_all(GTK_DIALOG(dialog)->vbox);
     
     
      switch (gtk_dialog_run(GTK_DIALOG(dialog)))
        {
            /* L utilisateur valide */
            case GTK_RESPONSE_OK:
                pathfe = gtk_entry_get_text(GTK_ENTRY(pathf));
     
                break;
            /* L utilisateur annule */
            case GTK_RESPONSE_CANCEL:
            case GTK_RESPONSE_NONE:
            default:
                gtk_main_quit();
                break;
        }
        gtk_widget_destroy(dialog);
    }
    main.c
    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
    98
    99
    100
    101
    102
    103
    104
     
     
    #include <stdlib.h>
    #include <gtk/gtk.h>
    #include "filefunc.h"
    #include "menu.h"
     
    #include <gdk-pixbuf/gdk-pixbuf.h>
        GtkWidget *Window;
        GtkWidget *afimg;
     
        GtkWidget* table1;
     
        GtkWidget* vbox;
     
     
     GtkWidget*sm;
     
     
     
        GtkWidget* btimg[4];
        GdkPixbuf* image;
          GtkWidget *file;
      GtkWidget *op;
    GtkWidget *save;
      GtkWidget *opw;
    GtkWidget *quit;
    GtkWidget*mb;
          GtkWidget *filemenu;
     
          int imw = 250;
    int imh = 400;
     
    int main(int argc,char **argv)
    {
        /* Déclaration du widget */
     
     
     
     
     
     
        gtk_init(&argc,&argv);
        /* Création des widgets*/
        Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        hbox = gtk_hbox_new(TRUE, 0);
        hbox1 = gtk_hbox_new(TRUE, 0);
        image = gdk_pixbuf_new_from_file_at_size    (pathfe,imh,imw, NULL);
        afimg = gtk_image_new_from_pixbuf (image);
        vbox = gtk_vbox_new (FALSE,0);
         btimg[0]= gtk_button_new_with_label("Zoom+");
     
        btimg[1]= gtk_button_new_with_label("Zoom-");
        btimg[2]= gtk_button_new_with_label("bb");
        btimg[3]= gtk_button_new_with_label("Bouton 4");
        table1 = gtk_table_new (19,6,TRUE);
     
    gtk_window_set_title(GTK_WINDOW(Window), "Pic-Center");
    gtk_window_set_default_size(GTK_WINDOW(Window), 500, 500);
    gtk_window_set_position(GTK_WINDOW(Window), GTK_WIN_POS_CENTER );
    mb = gtk_menu_bar_new();
      filemenu = gtk_menu_new();
     
      file = gtk_menu_item_new_with_label("Fichier");
      op = gtk_menu_item_new_with_label("Ouvrir");
      save = gtk_menu_item_new_with_label("Sauvgarder");
    opw = gtk_menu_item_new_with_label("Ouvrir A partir d'un lien");
    quit = gtk_menu_item_new_with_label("quitter");
     
      gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), filemenu);
     
      gtk_menu_shell_append(GTK_MENU_SHELL(mb), file);
        gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), op);
         gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), opw);
      gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), save);
       gtk_menu_shell_append(GTK_MENU_SHELL(filemenu),quit );
     
    gtk_container_add(GTK_CONTAINER(Window), GTK_WIDGET(table1));
     
    gtk_table_attach_defaults(GTK_TABLE(table1),mb,0,6,0,1);
    gtk_table_attach(GTK_TABLE(table1),afimg,2,5,4,9,GTK_EXPAND,GTK_EXPAND,0,0);
    gtk_table_attach_defaults(GTK_TABLE(table1),btimg[0],0,1,15,16);
    gtk_table_attach_defaults(GTK_TABLE(table1),btimg[1],1,2,15,16);
    g_signal_connect(G_OBJECT(Window), "destroy", G_CALLBACK(OnDestroy), NULL);
    g_signal_connect(G_OBJECT(quit), "activate", G_CALLBACK(quite), NULL);
    g_signal_connect(G_OBJECT(op), "activate", G_CALLBACK(open), NULL);
    g_signal_connect(G_OBJECT(btimg[0]), "clicked", G_CALLBACK(zoomp), NULL);
    image = gdk_pixbuf_new_from_file_at_size    ("C:/Documents and Settings/anis/Bureau/na.png",imh,imw, NULL);
        gtk_widget_show_all(Window);
     
        gtk_main();
        return EXIT_SUCCESS;
    }
    void zoomp(void)
    {
       int imhp= imh+50;
       int imwp= imw+50;
     
    gdk_pixbuf_scale_simple( GDK_PIXBUF (image),imwp,imhp,GDK_INTERP_BILINEAR);
     
     
     
     
    }
    tous marche bien mais quand je met le chemin dans la boite de dialog et je clique sur valider rien n'arrive
    bien que je met le chemin en des guillemets mais sa donne rien
    Aidez moi svp
    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    À vue de nez déjà, pathfe est mal déclaré dans filefunc.c:
    const gchar *pathfe[1000];

    Là tu déclares un tableau de 1000 pointeurs de caractères au lieu d'un pointeur de caractères.

    De plus les prototypes de tes callbacks ne correspondent pas à ceux des signaux:
    par exemple ta fonction open exécutée en réponse à l'émission du signal "activate" d'un GtkMenuItem est:
    alors que la documentation de GtkMenuItem::activate indique que c'est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void user_function (GtkMenuItem *menuitem, gpointer user_data)
    Il y a sans doute d'autres erreurs, mais c'est ce que j'ai vu de plus flagrant.

Discussions similaires

  1. Ouvrir une image avec CxImage
    Par le-makinero dans le forum MFC
    Réponses: 7
    Dernier message: 24/04/2006, 15h33
  2. Ouvrir une image au hasard
    Par rpoulin dans le forum Langage
    Réponses: 4
    Dernier message: 25/03/2006, 22h34
  3. [VBA-E] Ouvrir une image en ".bmp"
    Par Xavos dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/03/2006, 09h48
  4. [VBA-E]Ouvrir une image jpg àl'aide d'une macro
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/03/2006, 09h47
  5. Ouvrir une image avec paint depuis un formulaire
    Par gui38 dans le forum Access
    Réponses: 3
    Dernier message: 14/11/2005, 16h40

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