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. #21
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    C'est l'essence même de ce genre de forum de répondre aux questions des développeurs de tout poil. Ce n'est pas la première fois que tu postes ici et bien entendu nous nous faisons un plaisir de te répondre à la hauteur de nos connaissances.

    Chercher la meilleure façon de coder son programme et surtout choisir quel langage pour le faire reste une des premières questions à se poser avant de mettre les mains dans le "cambouis".

    Tu dis vouloir développer des petits jeux utilisables en lignes et en même temps pouvoir les intégrer à une application graphique (codée ici avec Gtk+) je te propose alors de coder le tout en Java. Il y a pléthore de documentation. Le langage te permet de coder des applets conçus pour être intégrer dans les navigateurs web, et tu peut aussi les utiliser dans les applications écrites directement en Java. Si tu veux te donner une idées des possibilités graphiques et de jeu regardes du côté de wakfu.
    Pour finir Java est un langage multiplateforme. Tu codes une seule fois pour toutes les plateformes existantes (Il faut juste installer le moteur java sur la dite plateforme).

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Les programmes java sont long à s'exécuter car il nécessite une machine virtuel.
    Quent on veut distribuer son programme ses difficil de fournir un instalateur pour qu'il soi instalable facilement.
    Exemple:le logiciel e-anim est tres dur a installer sur ubuntu et même sur windows ou ses plus simple se n'est pas aussi simple que pour un programme clasique.
    Apres, je reconais java a aussi des aventage,pour créer des programme pour téléphone portable ses bien,pour des jeux en ligne ses bien.
    Mais ses langage long est compliqué à apprendre et je n'est pas le temps de me lancer dedent.
    Et puis se que je veut ses pas tout refaire dans un autre langage, je veut continuer a programmer en c avec gtk, la partit jeux video sera une sous partit d'un programme.
    Je suis plus a l'aise en c, et les programme sont facilment instalable est s'éxecute rapidement.
    Si je voulais apprendre un peu flash ses par se qu'il y a des tutoriaux simple ou on n'est pas obligé d'apprendre flash en totalité et avec des logiciel comme e-anim sa à l'air assé simple.
    Et puis comme je fait aussi des sites sa peut aussi mettre util pour créer des animations.
    Mais si se n'est intégrable dans un programme gtk écrit en c je préfaire laisser tomber.
    A la rigeur la partit jeux en ligne se n'est pas indispensable, se qu'il me faut ses une librairie graphique comme gdkpixbuf mais bien documenter qui s'intègre facilment avec gtk.
    J'aurré bien tenté de comprendre gdkpixbuf mais il n'y a aucun tutoriel, et si j'attend a chaque fois qu'on me réponde sur se forum pour obtenir des petite informations tout les 1 ou 2 jours j'ai pas fini d'attendre alors que je suis assai préssé.
    Et puis il y a tellement de chose a apprendre que vous n'aurré pas forcement le temps et la patience requise pour me répondre.

  3. #23
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Pour aller dans ton sens j'ai trouvé une librairie te permettant d'intégrer du flash à gtk : SwfdecGtkWidget. Tu vas retrouver le même problème. C'est en anglais dans le texte.
    Tu trouveras aussi le wiki pour t'aider (qui est en anglais aussi bien sûr).

  4. #24
    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 grex1 Voir le message
    J'aurré bien tenté de comprendre gdkpixbuf mais il n'y a aucun tutoriel
    Correction: il n'y a aucun tutoriel en français. Mais je veux bien admettre que même en anglais la documentation officielle est assez minimaliste.

    Citation Envoyé par grex1 Voir le message
    si j'attend a chaque fois qu'on me réponde sur se forum pour obtenir des petite informations tout les 1 ou 2 jours j'ai pas fini d'attendre alors que je suis assai préssé.
    Moi je voudrais construire ma maison, je ne m'y connais pas trop mais je suis assez pressé. ça te paraît faisable ?

    Citation Envoyé par grex1 Voir le message
    Et puis il y a tellement de chose a apprendre que vous n'aurré pas forcement le temps et la patience requise pour me répondre.
    Je confirme. Je n'ai quasiment pas posté dans ce fil de discussion parce que sur ton précédent fil j'avais l'impression que tout ce que je faisais ne servait strictement à rien. J'ai essayé de répondre aussi clairement que j'ai pu à tes questions, en te donnant en français les différentes étapes pour arriver à ton résultat. ça n'a pas marché. J'ai ensuite codé des exemples comme tu le demandais, mais ça n'a pas marché non plus: tu ne voulais pas utiliser de code que tu ne comprenais pas (parce que tu ne l'as pas codé toi même), au lieu de poser des questions sur les parties du code fourni que tu ne comprenais pas. Même un tutoriel en français ne suffira pas: il faudra encore transposer le tutoriel à ta problématique.

    Conclusion: revois tes ambitions à la baisse, ou trouve quelqu'un pour faire le boulot si tu es vraiment pressé. Apprendre à programmer, dyslexique ou pas, ça prend du temps. On veut bien filer un coup de main, mais on ne sait pas faire de miracle: tu ne deviendras pas un dieu du C en 1 mois.

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Moi je voudrai construire ma maison mais je n 'ai casiment que la liste des matériaux avec des petite description dans une langue que je ne connais pas.
    Une fois traduit par un anglais qui parle mal le francais j'obtiens des petite description du style "brics renforce mur maison."
    Bien que à coté certaine personne accepte de me donner de temps à autre des petit morceaux de plans ça te paraît faisable ?
    T'est code m'on appris des choses j'ai réutilisé certaine partit mais des fois tu me demander de comprendre en plus comment sont fabriquer certaine fonction c'est comme si tu me demander de comprendre comment sont fabriquer certain matériau d'une maison.
    Et puis je ne souhaite pas devenir un dieu du c en apprennent tout par coueur comme un écolier.
    Je fonctionne comme un créatif avec pas grand chose je peut inventer pluns de chose.

  6. #26
    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 grex1 Voir le message
    Moi je voudrai construire ma maison mais je n 'ai casiment que la liste des matériaux avec des petite description dans une langue que je ne connais pas.
    Une fois traduit par un anglais qui parle mal le francais j'obtiens des petite description du style "brics renforce mur maison."
    Bien que à coté certaine personne accepte de me donner de temps à autre des petit morceaux de plans ça te paraît faisable ?
    Bah non, c'est ce que je te dis. ça ne me parait pas faisable, c'est pour ça que je te dis de revoir tes ambitions à la baisse.

    Citation Envoyé par grex1 Voir le message
    T'est code m'on appris des choses j'ai réutilisé certaine partit mais des fois tu me demander de comprendre en plus comment sont fabriquer certaine fonction c'est comme si tu me demander de comprendre comment sont fabriquer certain matériau d'une maison.
    Une API c'est une boite à outils. Je te demande de comprendre à quoi sert un tournevis et un marteau, pas comment ils ont été faits, mais comment on s'en sert. A aucun moment on n'est rentrés dans le code de GdkPixbuf, on s'est cantonnés aux cas d'utilisation. Mais aucune API graphique n'abstrait complètement la manipulation des données graphiques, tout simplement pour des raisons de performance. Il faut donc, selon tes besoins, utiliser les outils qui conviennent à ton problème. Il faut donc comprendre à quoi servent les outils avant de s'en servir. Or toi tu veux aller tellement vite vers ton résultat final que tu ne prends pas le temps de comprendre ce que font les fonctions. Ne regarde pas uniquement ton objectif, essaie aussi de comprendre comment fonctionnent les outils que tu veux utiliser !

    Citation Envoyé par grex1 Voir le message
    Et puis je ne souhaite pas devenir un dieu du c en apprennent tout par coueur comme un écolier.
    Je te rassure, j'ai toujours détesté apprendre par coeur, c'est pour ça que j'ai fait de l'informatique et pas de la biologie comme mes potes. Mais personnellement je retiens mieux les choses quand je comprends pourquoi elles sont ce qu'elles sont.

    Citation Envoyé par grex1 Voir le message
    Je fonctionne comme un créatif avec pas grand chose je peut inventer pluns de chose.
    La créativité c'est bien quand tu as une base technique en dessous, mais ça ne fait pas tout.

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Tu me demandé dabord de comprendre comment est constitué un tournevis et un marteau ensuite tu m'expliquer comment s'en servire .
    Le marto on pourrai le comparé a la fonction qui modifis la couleur du pixel.
    Apres je reconnais que comme cette foncion n'est pas totalment au point il fallé comprendre de quoi elle étté constitué pour amélioré les performance bien que sa n'été pas indispensable.
    Mais personnellement je retiens mieux les choses quent au début je ne comprend pas tout est que tout fonctionne.
    Ensuite j'éssaye de comprendre pourquoi sa fonctionne, sa fait travailler mon imagination et comme j'ai l'impression d'avoir découvert qu'elle que chose je retient mieux.
    Si on me montre pas avent un exemple d'utilisation, je suis tros curieux est préssé donc je n'arrive pas à me représenter son fonctionnement.
    Apres plus tard tu t'été résigné à montré un exemple d'utilisation de ta fonction mais comme j'avais déjà avent tenté de comprendre l'utilisation d'une autre fonction similaire j'été un peu perdu.
    Mais si tu m'avais montré l'exemple au début je m'y serai intéressé de plus pres.
    Apres chacun sa façon d'apprendre moi je retient mieux comme sa.
    Sa me rappel une citation:
    «La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !»
    Quent j'été à l'école en cour de math je préféré déjà regardé la réponse avent l'énonssé, et je déduisé moi même comment fonctionne les formules.
    Ses peut être du à ma dyslexie car à l'époque j'avais plus de mal à lire mais
    sa dévelope l'imagination et l'école n'est pas fait pour les créatifs.

    A par sa aisse qu'on peut me montrer un exemple d'utilisation pour bouger les pixbufs à l'aide de la souris en utilisent:
    gdk_pixbuf_copy_area
    Ensuite je vous jure que j'essaierai de comprendre, je reposteré sur le forum si il le faut, j'ai juste besoin d'exemple d'utilisation.

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    je vien de trouver une autre librairie qu'il est possible d'intégré à gtk http://www.sfml-dev.org/tutorials/1....widgets-fr.php
    Sa m'a l'air très bien, il est même possible de gérer le son et il y à un module réseau.

  9. #29
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Pourquoi pas. Mais elle est codée en C++. Ca te pose pas de problème?

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Il y à aussi une version c, par contre je ne trouve aucun tuto qui apprend à s'en servire en c.
    Au pire je peut apprendre certaine base du c++(qui doit ressemblé au c) juste pour pouvoir suivre le tuto en demandent sur un forum caisse que je doi apprendre en c++ pour pouvoir suivre le tuto même si après je programme en c.
    Mais il faudra aussi qu'on m'explique comment l'intégré à GTK. car il montre juste comment l'intégré à wxWidgets.
    Donc une fois de plus je suis encore dépendent des gens sur les forums et si personne ne m'aide je suis fichu.

  11. #31
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Si tu crois que les programmeurs ressemblent à Néo dans Matrix, tout seul dans son coin, tu te trompes lourdement. Les forums sont des sources importantes d'information pour tous les programmeurs, qu'ils soient expérimentés ou non.
    Pour ma part je programme en C pour le plaisir depuis plus de 20 ans et je peux t'affirmer que je suis loin de tout maitriser. Je me suis mis au C++ depuis un an environ et là, tu me croire, on n'est loin du C. Alors vouloir apprendre juste les "deux trois trucs" nécessaires à l'utilisation d'un librairie écrite en C++ est voué à l'échec.

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Tout dépend des programmeurs certain reste seul d'autre non.
    Dans mon cas, j'apprend mieux seul car pour bien réfléchir j'ai besoin d'être au calme et j'ai souvent besoin de faire des petite pause pour faire le tris dans ma tête.
    Par contre quant je n'ai pas de tutorial et que je n'ai qu'une doc j'arrive a rien, la majorité des truck que j'ai appris en c c'est tout seul.
    Le probleme c'est que j'avais commencer à apprendre le c il y à 3 ans, et pendent 2 ans j'ai casiment arrété, je m'y suis remis que résament .
    Apres ses vrais moi aussi je ne suis pas un expert et je n'es jamais été un expert, j'ai juste appris les tutoriels C et le tuto gtk de se site, mais si sa avais été en cour j'aurré jamais été jusque la.
    Et puis mon but n'a jamais été d'être un expert dans un domaine le plus importent ses de trouver des nouvelle idées.
    Par la suite, je souhaite apprendre d'autre chose qui n'on rien avoir avec l'informatique pour pouvoir augmenter mes chance de faire des association d'idée pas forcement évidente.
    Car ses en mélengens les domaines qu'on n'est plus suseptible de faire des découverte, exemple la programmation génétique est un mélange de biologie est d'informatique.
    Et l'aventage d'être autodidact c'est qu'on apprend se qui nous intéraisse donc on n'aprend pas forcement la même chose qu'a l'école.
    Plus les étudients avence dans leur étude plus y se spécialise dans un domaine alors que ses a se moment la qu'on devrais le plus mélanger les domaine et puis on leur demande d'apprendre tout par coueur donc il on moin le temps de se diversifié.

    A par sa, j'ai tenté d'installer la librairie cfsml et ses tros compliqué,je doi déja installer la version c++ pour pouvoir utiliser la version c et l'archive télécharger sur le site est endomager, j'ai poser une question sur le forum du site de sflm j'attend qu'on me réponde .
    J'ai aussi trouver qu'elle qu'un qui à acceptée de m'expliquer comment retrenscrire en c se qui est expliquer en c++ d'apres lui ses vrément les bases du c++ don on n'a besoin pour comprendre le tuto.
    Mais temps que je peut pas l'installer je peut pas tester grand chose.
    Sinon aisse qu'il existe d'autre librairie bien documenté en c qui s'intègre facilement à GTK?
    Ou sinon ses possible de me remontrer des exemples avec gdkpixbuf?
    Vous feriez quoi à ma place?

  13. #33
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Un GdkPixbuf n'est rien d'autre qu'une structure de ce genre (Ce n'est pas la réalité, juste un exemple pour comprendre):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef struct
    {
      gint width;
      gint height;
      gint channel;
      gchar *buffer;
    } GdkPixbuf;
    • width : largeur de l'image.
    • height : hauteur de l'image
    • channel : nombre d'octets utilisés pour représenter un pixel.
    • buffer : mémoire allouée. Elle contient tous les octets de tous les pixels placés les uns à la suite des autres.

    La particularité du buffer est que l'on ne peut pas faire directement channel*width pour connaitre la longueur réelle d'une ligne. Il faut passer par la fonction gdk_pixbuf_get_rowstride();. Sinon touts les fonctions pour accéder aux données internes de la structure se trouvent ici.

    La librairie GdkPixbuf met aussi à ta disposition quelques fonctions pour manipuler l'image dans son ensemble. Tu peux charger/sauver une image depuis un fichier, créer un pixbuf vierge, le remplir d'une couleur choisie etc...

    Ce qu'il faut garder à l'esprit c'est que ce n'est qu'une structure. A partir de là le reste n'est que de la programmation C pure.

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Cette foi si je ne souhaite pas modifier un pixbuf.
    La j'émerai juste savoir comment déplassé un pixbuf à l'aide des évènement la souris qui à été coller sur un autre grasse à gdk_pixbuf_copy_area
    Et je ne veut pas utiliser à la plaçe des fonctions de cairo comme gdk_pixbuf_composite.
    Et ses inutile de me remontrer la page de la doc sur les évènement je les déja lu.
    Plus bas j'ai déja poser des question sur les passages de la doc je ne comprenais pas au qu'elle on ne ma pas entièrement répondu .
    Et puis je préfairé qu'on me montre un exemple de code plus tot que me montrer séparément les fonctions ou structure que je doit utiliser.

  15. #35
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par grex1 Voir le message
    Et je ne veut pas utiliser à la plaçe des fonctions de cairo comme gdk_pixbuf_composite.
    gdk_pixbuf_composite est une fonction sur les GdkPixbuf comme le préfixe de la fonction l'indique, pas une fonction cairo.

    Citation Envoyé par grex1 Voir le message
    Plus bas j'ai déja poser des question sur les passages de la doc je ne comprenais pas au qu'elle on ne ma pas entièrement répondu
    Il y a beaucoup de bruit sur ce thread, n'hésite pas à reposer ta question pour être sûr qu'on réponde à la bonne. J'ai survolé rapidement le thread, le seul truc sans réponse que j'ai trouvé c'est une réponse où tu dis que le résultat n'est "pas parfait", on n'est pas devin ici, il faut mieux décrire ce qui ne te va pas dans le résultat.

    Citation Envoyé par grex1 Voir le message
    Et puis je préfairé qu'on me montre un exemple de code plus tot que me montrer séparément les fonctions ou structure que je doit utiliser.
    Je sais pas si t'as conscience que quand tu demandes ça, ça veut à peu près dire "écrivez le code à ma place, parce qu'une fois que vous l'avez écrit pour moi, j'arrive beaucoup plus facilement à écrire le code".

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Voici une question au qu'elle on ne m'a pas répondu:
    GDK_EXPOSURE_MASK
    recevoir exposer les événements

    Ses faire quoi exposer ?
    A par sa dans le premier exemple qu'on m'a donné gdk_pixbuf_composite saire à fusionner 2 pixbuf dans un seul pour être ensuite déssiner avec cairo,est être afficher ensuite.
    Se que j'aurrai voulu ses juste les coller avec gdk_pixbuf_copy_area en utilisent ensuite Gdk & cie

    Je suis conscient que je demande : "écrivé moi un petit code très simple est rapide à réalisé par se qui conaise bien."
    Pour que je compraine comment sa fonctionne est que je fasse par la suite mais propre code qui n'aurron rien avoir.
    Par exemple un grand cuisiner avent d'inventer ses propres recette on lui a montrer d'autre recette.
    Apres chacun sa façon d'apprendre, moi j'apprend mieux comme sa d’ailleurs sur se site il y à un tutoriel qui illustre bien cette façon d'apprendre "gtk par l'exemple".

  17. #37
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par grex1 Voir le message
    Voici une question au qu'elle on ne m'a pas répondu:
    "expose", c'est un évènement qui est envoyé quand une partie de fenêtre devient visible à l'écran pour indiquer que puisque la fenêtre est visible, il faut dessiner ce qu'il faut afficher à l'écran dedans.

    Citation Envoyé par grex1 Voir le message
    A par sa dans le premier exemple qu'on m'a donné gdk_pixbuf_composite saire à fusionner 2 pixbuf dans un seul pour être ensuite déssiner avec cairo,est être afficher ensuite.
    Ca sert à "copier" un pixbuf à l'intérieur d'un autre, ensuite pour l'affichage, ça ne se fait pas avec cairo.

    Citation Envoyé par grex1 Voir le message
    Par exemple un grand cuisiner avent d'inventer ses propres recette on lui a montrer d'autre recette.
    Oui, et il n'est pas allé réclamer à droite à gauche "faites moi la béchamel", "découpez moi les pommes de terre", "rapez moi le gruyère", "montrez moi comment vous faites le montage final avant de mettre au four" lorsqu'il a voulu faire un gratin, il a lu la recette, il l'a comprise et il a expérimenté. Là pour moi la recette, c'est les diverses fonctions à utiliser pour parvenir à tes fins, ce qu'on t'as donné. Mais toi tu veux plus que ça, lorsque des explications détaillées existent, tant mieux, quand ça n'existe pas, il faut malheureusement expérimenter par toi même pour comprendre.

  18. #38
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Je sais, vous n'allez pas être contents mais vu le temps qu'il a fait aujourd'hui je me suis mis à mon clavier pour lui pondre un programme avec un maximum de commentaires.

    Ce programme affiche une fenêtre blanche dans lequel est disposé par dessus un rectangle noir. Ces deux couleurs sont des GdkPixbuf. Donc on peut facilement les changer pour des images prises dans des fichiers sur DD. En cliquant sur le carré noir on le déplace au grès du déplacement de la souris. J'espère cette fois qu'il répondra à toutes tes attentes.

    Pendant que j'y suis, si gege2061 passe par là et qu'il trouve le code intéressant qu'il ne se gène pas pour en faire un tutoriel s'il en a envie.
    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
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    #include <gtk/gtk.h>
     
    /* Structure qui va nous servir à atteindre les différentes images à dessiner
     * ainsi que différentes données nécessaire à la position de l'image
     * courante déplacée.
     */
    typedef struct
    {
        GdkPixbuf *MainPixbuf;
        GdkPixbuf *SecondPixbuf;
        gint XCurrentPosition;    // Position X courante de SecondPixbuf
        gint YCurrentPosition;    // Position Y courante de SecondPixbuf
        gint XPointer;            // Position x de la souris lors du clic
        gint YPointer;            // Position y de la souris lors du clic.
        gboolean ButtonPressedInPixbuf;
    } MainData;
     
    /* Fonction d'affichage du drawingarea. */
    gboolean callback_expose_event(GtkWidget *widget, GdkEventExpose *event,
                                    MainData *data)
    {
        /* On crée un nouveau contexte graphique. Permet de changer la couleur
         * d'avant plan pour écrire du texte par exemple. Ici on n'en a besoin
         * pour afficher les pixbuf.
         */
        GdkGC *gc = gdk_gc_new (widget->window);
     
        /* On commence par afficher l'image de fond qui est MainPixbuf de data. */
        gdk_draw_pixbuf(widget->window, gc, data->MainPixbuf, 0, 0, 0, 0,
                        gdk_pixbuf_get_width(data->MainPixbuf),
                        gdk_pixbuf_get_height(data->MainPixbuf),
                        GDK_RGB_DITHER_MAX, 0, 0);
     
        /* On ajoute maintenant par dessus la deuxième image à sa nouvelle position.
         */
        gdk_draw_pixbuf(widget->window, gc, data->SecondPixbuf, 0, 0,
                        data->XCurrentPosition, data->YCurrentPosition,
                        gdk_pixbuf_get_width(data->SecondPixbuf),
                        gdk_pixbuf_get_height(data->SecondPixbuf),
                        GDK_RGB_DITHER_MAX, 0, 0);
     
        /* Destruction du contexte graphique devenu inutile. */
        g_object_unref (gc);
     
        return FALSE;
    }
     
    /* Fonction de gestion du déplacement de la souris.*/
    gboolean callback_mouse_moved (GtkWidget *drawingarea, GdkEventMotion *event,
                                    MainData *data)
    {
        gint XOffset, YOffset;    // Contiendra le décalage à effectuer.
     
        /* On commence par voir si le bouton gauche de la souris est enfoncé.
         * Pour ca on regarde la variable "states" de l'event transmis au callback.
         */
        if (event->state>>8)
        {
            /* Si le bouton de la gauche de la souris est enfoncé et que le curseur
             * est dans le carré noir alors on le déplace. */
            if (data->ButtonPressedInPixbuf)
            {
                /* On calcule le décalage. */
                XOffset = (gint)event->x - data->XPointer;
                YOffset = (gint)event->y - data->YPointer;
                data->XPointer = (gint)event->x;
                data->YPointer = (gint)event->y;
     
                /* Déplace le carré noir. */
                data->XCurrentPosition += XOffset;
                data->YCurrentPosition += YOffset;
     
                /* Il ne nous reste plus qu'à demander à rafraichir la fenêtre.
                 * Pour se faire on simplement quelle partie il faut redessiner. Je
                 * spécifie ici l'ancienne position du rectangle qui sera redessiné
                 * en blanc.
                 */
                gtk_widget_queue_draw_area(drawingarea,
                                            data->XCurrentPosition - XOffset,
                                            data->YCurrentPosition - YOffset,
                                            gdk_pixbuf_get_width(data->SecondPixbuf),
                                            gdk_pixbuf_get_height(data->SecondPixbuf));
            }
            else
                g_print("pas dans le carré \n");
        }
     
        return FALSE;
    }
     
    /* Fonction de gestion du clic de souris. */
    gboolean callback_button_pressed (GtkWidget *widget, GdkEventButton *event,
                                    MainData *data)
    {
        GdkRectangle zone;        // permet de savoir si on est dans le rectangle.
        GdkRegion *region = NULL;
     
        /* On commence par voir si le bouton gauche de la souris est enfoncé.
         */
        if (event->button == 1)
        {
            /* La deuxième étape maintenant doit nous assurer que le pointeur est
             * bien sur le carré noir à déplacr.
             */
            zone.x=data->XCurrentPosition;
            zone.y=data->YCurrentPosition;
            zone.width = gdk_pixbuf_get_width(data->SecondPixbuf);
            zone.height = gdk_pixbuf_get_height(data->SecondPixbuf);
            region = gdk_region_rectangle (&zone);
            if (gdk_region_point_in(region, (gint)event->x,(gint)event->y))
            {
                data->ButtonPressedInPixbuf=TRUE;
                data->XPointer = (gint)event->x;
                data->YPointer = (gint)event->y;
            }
            else
                data->ButtonPressedInPixbuf=FALSE;
     
            gdk_region_destroy (region);
        }
     
        return FALSE;
    }
     
    gint main (gint argc, gchar *argv[])
    {
        GtkWidget *window = NULL;
        GtkWidget *drawingarea= NULL;
        MainData data;
     
        gtk_init (&argc, &argv);
     
         /* Création de la fenêtre principale. Rien de bien compliqué ici. */
        window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size (GTK_WINDOW(window), 400, 400);
     
         /* On crée deux images. L'image de fond est blanche et l'image déplacé est
          * un cube noir de 40 de côté. Il est bien sûr possible d'utiliser
          * la fonction gdk_pixbuf_new_from_file(); à la place.
          */
        data.MainPixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, 400, 400);
        gdk_pixbuf_fill(data.MainPixbuf, 0xFFFFFFFF);
         data.SecondPixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, 40, 40);
         gdk_pixbuf_fill(data.SecondPixbuf, 0x00000000);
         /* On positionne la deuxième image au centre de la fenêtre. */
         data.XCurrentPosition = 180;
         data.YCurrentPosition = 180;
         /* On initialise le reste des données. */
         data.ButtonPressedInPixbuf = FALSE;
     
        /* Création d'un GtkWidgetArea qui va nous servir de support. On y déposera
         * par la suite une image de fond sur laquelle se déplacera une autre image
         * à l'aide de la souris.
         */
        drawingarea = gtk_drawing_area_new();
        gtk_container_add(GTK_CONTAINER(window), drawingarea);
     
        /* Maintenant un GtkDrawingArea n'écoute pas tous les signaux émis. Si tel
         * était le cas il ralentirait lourdement l'application. En partant de là
         * il nous faut lui indiquer quels signaux écoutés.
         * GDK_POINTER_MOTION_MASK : est émis lorsque la souris se déplace sur le
         *                           drawingarea
         * GDK_BUTTON_PRESS_MASK   : est émis lorsqu'un bouton de la souris est
         *                           enfoncé
         */
        gtk_widget_set_events(drawingarea, GDK_POINTER_MOTION_MASK|GDK_BUTTON_PRESS_MASK);
     
        /* Enfin on connecte le signal écouté à une fonction CallBack. C'est dans
         * ces fonctions que le calcul de déplacement s'effectuera.
         */
        g_signal_connect (G_OBJECT(drawingarea), "motion-notify-event", G_CALLBACK(callback_mouse_moved), &data);
        g_signal_connect (G_OBJECT(drawingarea), "button-press-event", G_CALLBACK(callback_button_pressed), &data);
        g_signal_connect (G_OBJECT(drawingarea), "expose_event", G_CALLBACK(callback_expose_event), &data);
     
        /* On connecte la fermeture de la fenêtre principale à l'arrêt du programme.
         */
        g_signal_connect (window, "delete-event", G_CALLBACK(gtk_main_quit), NULL);
     
        /* On affiche le tout */
        gtk_widget_show_all (window);
     
        /* On lance la boucle principale gtk. */
        gtk_main ();
     
        return 0;
    }

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

    Informations forums :
    Inscription : Août 2009
    Messages : 119
    Par défaut
    Moi j'apperai sa un liste d'ingrédients(doc=liste fonction=ingrédient) avec a coté des petite indications du style la béchamel(un ingrédient fonction) est souvent utilisé dans t'elle ou t'elle plats elle est composé elle même de t'elle ou t'elle ingrédient.
    Mais moi comme je suis pressé pour ma recette je veut utiliser de la béchamel du supermarché.
    Et vous se que je vous demande se n'es pas une recette(un tutorial)je vous demande juste de me montrer un plat que vous avais déja fait.
    Et je vous demande pas de me faire un plats long est compliqué, je demande juste un plats comme une piece monté(je plaisente).

    Ou alors je vous est tros surestimé et j'ai surestimé l'ampleur de la tache ses quant même long est compliqué?je me trompe?

    Edit: je n'est pas encore vu le méssage de gerald3d j'été entrun d'écrire quent il la posté.

  20. #40
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Alors grex1, ce code répond-il à tes questions?

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