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 :

Comment bouger et coller des pixbufs a la manier de la sdl.


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut Comment bouger et coller des pixbufs a la manier de la sdl.
    Bonjour,
    Sa m'embaite de redémender de l'aide sur se forum mais j'ai pas tros le chois.
    J'ai envie de recoder entierment un début de jeux video pour édais des enfents dyslexique(étent moi même dyslexique) que j'avais commencer avec la sdl.
    Comme avec la sdl je suis tres limité car ses uniquement orienté jeux video je peu pas manipuller du texte comme je veut et faire de vrais interphases.
    Donc j'émerai qu'on m'explique un peut plus comment fonctionne les pixbuf car je suis bloqué.
    On m'a déja expliquer comment modifier les couleurs d'un pixbuf mais maintenant j'émerai savoir comment coller des pixbuf sur d'autre pixbuf en fonction d'un axe x y.
    Ensuite jémerai savoir comment récupéré l'axe x y de la souris pour pouvoir bouger des pixbuf comme on le ferai avec des sdl surfaces.

    Désolé de redemander de l'aide se projet me tien trôs à coueur.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    Une première réponse façile : gdk_pixbuf_copy_area();. Cette fonction fait exactement ce que tu veux. Elle copie un pixbuf dans un autre aux coordonnées que tu désires.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    ok sa marche mais maintenant comment on fait pour récupéré les coordonnées de la souris?

  4. #4
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Grâce au signal GdkEventMotion

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    J'aissaye de comprendre les évènement d'apres la doc mais comme d'abitude ses loin d'être claire.
    Sa serai possible qu'on me montre comment bouger le pixbuf coller en fonction des coordonner de la souris des qu'on clique sur un des bouttons de s'elle si?
    J'ai déjà tenté le cou mais j'y comprend rien:
    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
      GdkPixbuf *pixbuffond;
    	pixbuffond = gtk_image_get_pixbuf(fond);
      GdkPixbuf *pixbufcoller;
    	pixbufcoller = gtk_image_get_pixbuf(coller);
    GdkEvent *evenement;
    gdouble x,y;
            gdk_pixbuf_copy_area (pixbufcoller,
                                                             0,
                                                             0,
                                                             50,
                                                             50,
                                                             pixbuffond,
                                                             0,
                                                             0);
          /* Connexions des signaux: */
     
     switch(evenement->type)
            {
     
     
     
                 case GdkEventMotion:
     
     
                 x = evenement->button.x;
                 y = evenement->button.y;
     
     
                         gdk_pixbuf_copy_area (pixbufcoller,
                                                             0,
                                                             0,
                                                             50,
                                                             50,
                                                             pixbuffond,
                                                             x,
                                                             y);
     
                break;
     
     
     
            }

  6. #6
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Par pitié, indente ton code nom de dieu !!!

    ça prend 5 secondes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    indent foo.c -linux -l110
    Si tu le fais pas de toute façon, personne ne prendra la peine de le lire.

  7. #7
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Voici un petit exemple de code qui blitte un rectangle noir (20x20) au coordonées de la souris dans une zone de dessin:

    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
    #include <gtk/gtk.h>
    #include <gdk/gdk.h>
     
    static gboolean expose_event_handler (GtkWidget *widget, GdkEventExpose *event);
     
    static void motion_event_handler (GtkWidget *widget, GdkEventMotion *event);
     
    /* Coordonées de la souris */
    static gint mouse_x = 0, mouse_y = 0;
     
    int 
    main (int   argc,
          char  *argv[])
    {
    	GtkWidget *window = NULL;
    	GtkWidget *draw = NULL;
     
    	gtk_init (&argc, &argv);
     
    	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    	gtk_window_set_default_size (GTK_WINDOW(window), 320, 200);
    	g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
    	draw = gtk_drawing_area_new ();
    	/* Exposition de la zone de dessin au signal émis par
    	 * le déplacement du pointeur de la souris
    	 */
    	gtk_widget_set_events (draw, 
    			GDK_EXPOSURE_MASK
    			| GDK_POINTER_MOTION_MASK);
    	gtk_container_add (GTK_CONTAINER(window), draw);
    	g_signal_connect (draw, "expose-event", G_CALLBACK(expose_event_handler), NULL);
    	g_signal_connect (draw, "motion-notify-event", G_CALLBACK(motion_event_handler), NULL);
     
    	gtk_widget_show_all (window);
     
    	gtk_main ();
     
        return 0;
    }
     
    static gboolean
    expose_event_handler (GtkWidget *widget, GdkEventExpose *event)
    {
    	GdkGC *gc = NULL; /* Le contexte graphique */
    	GdkRectangle rec; /* Rectangle pour la zone de clipping */
    	gint r_width = 20, r_height = 20; /* largeur du rectangle à blitter */
     
    	/* Création du contexte graphique */
    	gc = gdk_gc_new (widget->window);
     
    	/* Définition d'une zone de clipping (on ne dessine que le
    	 * strict nécéssaire)
    	 */
    	rec.width = event->area.width;
    	rec.height = event->area.height;
    	rec.x = event->area.x;
    	rec.y = event->area.y;
    	gdk_gc_set_clip_rectangle (gc, &rec);
     
    	/* Rectangle blitté au coordonées de la souris lorsqu'elle se
    	 * trouve dans la zone de dessin
    	 */
    	gdk_draw_rectangle (widget->window, gc, TRUE,
    			mouse_x - r_width / 2, mouse_y - r_height / 2,
    			r_width, r_height);
     
     
    	/* Destruction du contexte graphique */
    	g_object_unref (gc);
    }
     
    static void 
    motion_event_handler (GtkWidget *widget, GdkEventMotion *event)
    {
    	/* Mise à jour des coordonées de la souris */
    	mouse_x = event->x;
    	mouse_y = event->y;
     
    	/* Mise à jour de la zone de dessin */
    	gtk_widget_queue_draw (widget);
    }

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Désolé pour l'indentation.

    T'on code m'apprend des choses mes ses encore très flous.
    Sa saire à quoi cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_widget_set_events(draw,GDK_EXPOSURE_MASK|GDK_POINTER_MOTION_MASK);
    C'est quoi une zone de zone de clipping?
    C'est quoi un contexte graphique?

    Sa serai possible de le modifier pour que sa fasse la même chose mais avec 2 pixbuf un pixbuf de fond et un pixbuff à coller plus tot que de déssiner directement un rectangle?

  9. #9
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Pour la zone de clipping, ici, on s'en fout un peu, c'est pas très important, si tu veux des renseignements dessus, regarde ici: (wikipedia en)

    En fait, ce qui nous intéresse, c'est surtout l'utilisation du signal "motion-notify-event"
    A propos de ce signal, la doc dit :
    To receive this signal, the GdkWindow associated to the widget needs to enable the GDK_POINTER_MOTION_MASK mask.
    C'est donc pour cela que je fais appel à la fonction gtk_widget_set_events_mask

    Du coup, pour ton problème de pixbuf, je te laisse réfléchir, car ça fonctionne pareil.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    J'ai essayé de comprendre a l'aide de traducton mal traduit(google traduction) de la doc est ses difficile.
    pour sa je comprend:
    GDK_POINTER_MOTION_MASK
    recevoir tous les événements de mouvement pointeur

    En gros se paramettre une fois mis dans gtk_widget_set_events autorise la surface draw a recevoir les évènement de la souris.

    GDK_EXPOSURE_MASK
    recevoir exposer les événements

    Ses faire quoi exposer ?

    Pour le signal expose-event j'y comprend pas grand chose.
    Y dises qu'une zone à été caché,pourtent tout la surface est vide donc je vois pas se qui aurré pus être caché sauf le futur rectangle qui n'a même pas encore été déclaré mais je vois pas a quoi qsa erviré de le cacher,peut être que par cacher il veule dire supimmer,suprimmer pour être plassé ailleur.

    Pour motion-notify-event ses le signal qui est émis quant le pointer de la souris bouge ses pour cette raison qu'on mais a jour les coordonné des qu'on a ressu se signal dans la fonction motion_event_handler .


    J'ai tenté de remplassé le rectangle par des pixbuf:

    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
    #include <gtk/gtk.h>
    #include <gdk/gdk.h>
     
    static gboolean expose_event_handler (GtkWidget *widget, GdkEventExpose *event);
     
    static void motion_event_handler (GtkWidget *widget, GdkEventMotion *event);
     
    /* Coordonées de la souris */
    static gint mouse_x = 0, mouse_y = 0;
     
    int
    main (int   argc,
          char  *argv[])
    {
        GtkWidget *window = NULL;
        GtkWidget *draw = NULL;
     
        gtk_init (&argc, &argv);
     
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size (GTK_WINDOW(window), 320, 200);
        g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
        draw = gtk_drawing_area_new ();
        /* Exposition de la zone de dessin au signal émis par
         * le déplacement du pointeur de la souris
         */
        gtk_widget_set_events (draw,
                               GDK_EXPOSURE_MASK
                               | GDK_POINTER_MOTION_MASK);
        gtk_container_add (GTK_CONTAINER(window), draw);
     
        g_signal_connect (draw, "expose-event", G_CALLBACK(expose_event_handler), NULL);
        g_signal_connect (draw, "motion-notify-event", G_CALLBACK(motion_event_handler), NULL);
     
     
        gtk_widget_show_all (window);
     
        gtk_main ();
     
        return 0;
    }
     
    static gboolean
    expose_event_handler (GtkWidget *widget, GdkEventExpose *event)
    {
        GtkWidget *fond;
        GtkWidget *coller;
        fond = gtk_image_new_from_file("fond.jpg");
        coller = gtk_image_new_from_file("coller.jpg");
     
        GdkPixbuf *pixbuffond;
        GdkPixbuf *pixbufcoller;
        pixbuffond = gtk_image_get_pixbuf(fond);
        pixbufcoller = gtk_image_get_pixbuf(coller);
     
        gdk_pixbuf_copy_area (pixbufcoller,
                              0,
                              0,
                              50,
                              50,
                              pixbuffond,
                              mouse_x,
                              mouse_y);
    }
     
     
    static void
    motion_event_handler (GtkWidget *widget, GdkEventMotion *event)
    {
     
     
        /* Mise à jour des coordonées de la souris */
        mouse_x = event->x;
        mouse_y = event->y;
     
     
     
        /* Mise à jour de la zone de dessin */
        gtk_widget_queue_draw (widget);
    }
    Le probleme ses que je ne ses pas comment coller le pixbuf fond sur le draw d'ailleur je sais rien de drawing area je supose que ses une surface ou on colle tout les pixbufs et que ses a partir de cette surface qu'on peut réccupéré les signaux.

  11. #11
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Salut, j'ai corrigé ton code, en mettant quelques explications, seulement, il y a certains details, que je ne comprends pas beaucoup moi même, et je ne m'attarde pas dessus. De plus, j'ai beaucoup de bouleau en ce moment

    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
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    #include <gtk/gtk.h>
    #include <gdk/gdk.h>
     
    static gboolean expose_event_handler (GtkWidget *widget, GdkEventExpose *event);
     
    static void motion_event_handler (GtkWidget *widget, GdkEventMotion *event);
     
    /* Coordonées de la souris */
    static gint mouse_x = 0, mouse_y = 0;
     
    	int
    main (int   argc,
    		char  *argv[])
    {
    	GtkWidget *window = NULL;
    	GtkWidget *draw = NULL;
     
    	gtk_init (&argc, &argv);
     
    	window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    	gtk_window_set_default_size (GTK_WINDOW(window), 320, 200);
    	g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
    	draw = gtk_drawing_area_new ();
    	/* Exposition de la zone de dessin au signal émis par
    	 * le déplacement du pointeur de la souris
    	 */
    	gtk_widget_set_events (draw,
    			gtk_widget_get_events (draw)
    			| GDK_POINTER_MOTION_MASK);
    	gtk_container_add (GTK_CONTAINER(window), draw);
     
    	g_signal_connect (draw, "expose-event", G_CALLBACK(expose_event_handler), NULL);
    	g_signal_connect (draw, "motion-notify-event", G_CALLBACK(motion_event_handler), NULL);
     
    	gtk_widget_show_all (window);
     
    	gtk_main ();
     
    	return 0;
    }
     
    	static gboolean
    expose_event_handler (GtkWidget *widget, GdkEventExpose *event)
    {
    	/* Le contexte graphique, il contient les données nécessaire
    	 * pour dessiner (épaisseur des tracés, couleurs des lignes,
    	 * etc...)
    	 */
    	GdkGC *gc = gdk_gc_new (widget->window);
    	GError *error = NULL;
    	GdkPixbuf *background = NULL; /* Le pixbuf de fond */
    	GdkPixbuf *foot = NULL;
    	GdkPixbuf *foot_scaled = NULL;
     
    	/* On cache le curseur de la souris. (C'est pour faire
    	 * plus joli :) )
    	 */
    	gdk_window_set_cursor (widget->window, 
    			gdk_cursor_new_for_display (
    				gdk_display_get_default(), GDK_BLANK_CURSOR));
     
    	/* On charge les pixbuf à partir des fichiers */
    	background = gdk_pixbuf_new_from_file ("background.jpg", &error);
    	if (error) {
    		g_warning ("%s", error->message);
    		g_error_free (error);
    		error = NULL;
    	}
    	foot = gdk_pixbuf_new_from_file ("gnome-foot.png", &error);
    	if (error) {
    		g_warning ("%s", error->message);
    		g_error_free (error);
    		error = NULL;
    	}
     
    	/* On mets le pied dans le bon sens :p */
    	gdk_pixbuf_flip (foot, FALSE);
    	foot_scaled = gdk_pixbuf_rotate_simple (foot, GDK_PIXBUF_ROTATE_CLOCKWISE);
    	g_object_unref (foot);
    	foot = NULL;
     
    	/* Effet composite entre les pixbuf */
    	gdk_pixbuf_composite (foot_scaled, background,
    			0, 0,
    			gdk_pixbuf_get_width (background),
    			gdk_pixbuf_get_height (background),
    			mouse_x, mouse_y, 1, 1,
    			GDK_INTERP_HYPER,
    			100);
    	g_object_unref (foot_scaled);
    	foot_scaled = NULL;
     
    	/* On dessine le pixbuf */
    	gdk_draw_pixbuf (widget->window, gc, background,
    			0, 0, 0, 0, -1, -1, 
    			GDK_RGB_DITHER_MAX,
    			0, 0);
     
    	g_object_unref (gc);
    	g_object_unref (background);
    	return FALSE;
    }
     
    	static void
    motion_event_handler (GtkWidget *widget, GdkEventMotion *event)
    {
    	/* Mise à jour des coordonées de la souris */
    	mouse_x = event->x;
    	mouse_y = event->y;
     
    	/* Mise à jour de la zone de dessin */
    	gtk_widget_queue_draw (widget);
    }
    N'hésite pas à aller voir dans la doc, les choses que tu ne comprends pas. Il y a notamment un schéma pour la fonction gdk_pixbuf_composite

    Les images que j'ai utilisé sont disponibles ici

  12. #12
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Ah, aussi, n'oublie pas de libérer la ressource que tu alloue dans tes programmes

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    j'ai tester t'on code, quant je change les images par d'autre images j'ai juste une image bizarre(une sorte de mélange des 2 pixbuf)inactif.
    A coté de sa quant j'utilise t'est 2 images sa marche mais se n'est pas très fluide ses a dire que sa suis bien le pointer de la souris mais ses un peu lent.
    Aisse qu'il y existe autre solution plus simple ou on n'a pas besoin de déssinner sur une zone de dessin pour que sa marche?(en utilisent des gdk_pixbuf_copy_area)
    Pour la doc je la regarde déjà avec l'aide de google traduction mais ses très mal expliqué, se qu'il aurrai fallu ses un tutoriel.
    Maintenant je comprend mieux pourquoi les gens pré faire utilisé d'autre bibliothèque.
    Je crois que je vais finir par acheter se livre:
    Programmation Linux avec GTK+: Amazon.fr: David Odin: Livres@@AMEPARAM@@http://ecx.images-amazon.com/images/I/5101HHKYB1L.@@AMEPARAM@@5101HHKYB1L
    Même si pas mal de fonction sont devenus obsolète au moin ses fonction obsolete sont bien documenté donc je peut les utilisés, ses mieux que rien.

  14. #14
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    J'ai ce livre mais il est beaucoup trop vieux. Tu vas perdre plus de temps qu'autre chose.

  15. #15
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    A coté de sa quant j'utilise t'est 2 images sa marche mais se n'est pas très fluide ses a dire que sa suis bien le pointer de la souris mais ses un peu lent.
    Tu peux essayer de remplacer le GDK_INTERP_HYPER par un GDK_INTERP_NEAREST


    Aisse qu'il y existe autre solution plus simple ou on n'a pas besoin de déssinner sur une zone de dessin pour que sa marche?(en utilisent des gdk_pixbuf_copy_area)
    Pour la doc je la regarde déjà avec l'aide de google traduction mais ses très mal expliqué, se qu'il aurrai fallu ses un tutoriel.
    Maintenant je comprend mieux pourquoi les gens pré faire utilisé d'autre bibliothèque.
    Oui, avec Gdk & cie, c'est assez lourd, c'est pour ça qu'en général, on utilise Cairo

    Je crois que je vais finir par acheter se livre:
    Programmation Linux avec GTK+: Amazon.fr: David Odin: Livres
    A mon avis, tu ferais mieux d'acheter un bouquin d'anglais

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    J'ai remplassé le GDK_INTERP_NEAREST par le GDK_INTERP_HYPER ses déja beaucoup mieux qu'avent mais se n'est pas encore parfait.
    A par sa même si ses lourd tu peut me montrer l'autre solution.
    Par lourd tu veut dire quoi exactement?
    Aisse que sa reste aussi puissent que la SDL?
    Même si ses un peu moins bien je préfaire avoir un code plus compréhensible car t'elle que je me connais avec cairo sa risque d'être le bordel dans mon code, il risque d'y avoir une tonne de bug.
    Pour l'anglais je peut pas c'est une langue très dur pour les dyslexique, déjà qu'en programment j'ai tendance a tout mettre dans le désordre.

  17. #17
    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
    Citation Envoyé par gerald3d Voir le message
    J'ai ce livre mais il est beaucoup trop vieux.
    Juste par curiosité, il est basé sur quelle version de GTK+ ?
    Edit: Ok, le bouquin date de 2000, et GTK 2.0 date de 2002. Ce livre est donc totalement inutile.

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Je vient d'avoir une idée, aisse que ses possible de mettre du flash dans un programme gtk?
    Je connais pas flash mais je vais peut être mis mettre car sa me sera aussi util pour des sites et il y a beaucoup de tutorial.

  19. #19
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    Flash n'est-il pas propriétaire? Son utilisation n'implique-t-il pas l'achat de droit?

    Ensuite vouloir insérer Flash sous prétexte de ne pas arriver à faire ce que tu veux avec Gtk ne me semble pas très logique. Tu vas t'ajouter une difficulté supplémentaire d'autant plus que tu dis toi-même ne pas connaitre ce langage.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Flash est propriétaire mais pour les licence j'en sais rien il faut que je me renseigne.
    En tout cas ses intégrable a gtk mais je sais pas si ses juste pour des video ou si sa peut aussi marcher pour des jeux flash.
    mais sa m'a l'air compliquer à intégré:
    http://swfdec.freedesktop.org/wiki http://swfdec.freedesktop.org/docume...GtkWidget.html
    L'aventage d'utiliser flash ses que si j'ai un logiciel écrit princpalment avec gtk qui comporte des petit jeux flash intégré,ses petit jeux je pourré aussi les réutilisé pour les mettre sous forme de jeux en ligne.
    Mais sa m'a l'air compliquer à intégré et faut que je me renseigne sur la liçence.
    GDKpixbuf ses tres bien, je me serviré de se que vous m'avais appris pour le traitement d'image.
    Mais pour les jeuxvideo(même si ses juste pour un jeux educatif) sa m'a l'air tres compliquer sous prétexte que la doc est tres mal expliqué(un tres bon prétexte).
    Et puis je ne vais pas vous déranger tout le temps pour obtenir des infos au conte goute.
    Je suis incapable d'apprendre l'anglais(par le passé j'ai déja éssayé), j'ai tenté de comprendre la doc avec google traduction mais j'y comprend pas grand chose, vous ferié quoi à ma plasse?

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/08/2023, 14h49
  2. [XL-2010] comment copier coller des cellules sans prendre en compte les lignes cachées
    Par bboy-eazy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/09/2014, 15h20
  3. [XL-2003] Comment copier coller des données à intervalle de temps régulier vers un autre classeur
    Par vincentdulabo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2012, 15h59
  4. Comment bouger des images
    Par ould64 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 04/01/2008, 22h14
  5. Réponses: 5
    Dernier message: 14/02/2006, 14h32

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