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 :

[CAIRO] - Calques pour le dessin


Sujet :

GTK+ avec C & C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [CAIRO] - Calques pour le dessin
    Salut à tous,

    Je souhaite pouvoir dessiner par dessus une image via un système de calques (à la gimp ou inkscape).
    Etant donné que ce que je veux dessiner c'est plutôt du genre dessin vectoriel, je me suis naturellement dirigé vers l'utilisation de la librairie Cairo.

    A l'heure actuelle, j'arrive à afficher une image via un cairo_surface_t que j'affecte comme source à un cairo_t rattachée une gtk_drawing_area.

    Bref ça c'est bon

    Maintenant j'aimerai ajouter un calque pour pouvoir dessiner par dessus mon image (sachant que je souhaite pouvoir faire apparaitre, disparaitre, effacer le contenu du calque à volonté,...).
    Bref ça fait deux jours que je fouille sur le web et je n'arrive pas à trouver un exemple simple pour comprendre le principe de fonctionnement!
    J'ai cru comprendre qu'il fallait utiliser le canal alpha, et que l'objet cairo qui semblait approprié est les cairo_pattern_t.

    J'ai tenté de jeter un oeil aux sources de inkscape mais bon j'en ai pour un moment avant de tout capter

    Donc si quelqu'un sait déjà dans un premier temps quel est le principe (genre je créé tel objet que je range dans tel autre, ...). Si par ailleurs quelqu'un connait un ou des exemples de code suffisamment clairs pour comprendre quelque chose, je suis preneur

    Enfin d'une manière générale, je trouve que la doc de Cairo est pleine de ... vide! Donc malgré toutes mes recherches sur le web, je suis peut être passé à côté de tutoriaux sur cette librairie, donc si vous en connaissez des biens ... par ici les liens!

    Au final, si je m'en sort, je vous promet d'écrire un joli tutorial sur le sujet

  2. #2
    Membre expérimenté
    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
    Points : 1 633
    Points
    1 633
    Par défaut
    J'y connais rien en cairo Mais pour ton calque, ce que tu dois pouvoir faire, c'est créer une surface avec un fond transparent (valeur alpha à 0 ou 255), dessiner dessus, puis copier ça dans ta drawing area avec l'opérateur qui va bien.
    Si c'est pas clair, c'est normal, et je pourrai malheureusement pas t'en dire plus, j'y connais rien à cairo C'est peut être même totalement faux ce que je dis :p

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    ben a priori, y'a un peu de ça!

    J'ai lu à plusieurs endroit que Cairo permettait justement de gérer les calques plus facilement que GtK seul.

  4. #4
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    avec cairo je sais pas mais tu pourrais mettre ton image dans un gdkpixbuf, accéder aux couleurs des pixel en RVBA (rouge, vert, bleu alpha) et pour avoir la couleur afficher/enregistrer tu part du calque du haut et tu somme tant que t'as pas un alpha = alpha_max (255 par exemple).

    Tu peux aussi ajouter des modes de fusion (comme dans gimp).

    dans le programme que j'écris t'as l'idée pour les calques, c'est codé avec les pieds mais je pense que c'est compréhensible sinon demande. Les sources sont : http://http://rniamo-filters.2007.fr/viewtopic.php?t=6

    Ce qui concerne les calques se trouve dans le menu fusion.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Points : 177
    Points
    177
    Par défaut
    je sais que ca risque d'etre un peu offtopic (vu que ca ne parle pas de gtk), mais il existe une bibliotheque de canvas qui permet de gerer les calques avec des effets de transparence. Elle se nomme evas. Par contre, elle ne permet pas le dessins vectoriel (pas encore), que des donnees argb.

    pour cairo, tu peux toujours demander de l'aide sur irc.
    L'Opus attire les Prélats

  6. #6
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    je ne suis pas sûr mais je pense (en tout cas c'est ce que je ferais) qu'il faut "pixelliser" son dessin vectoriel tout en gardant ses points et ses tangentes pour pouvoir le modifier si besoin. Aussi ce n'est pas offtopic

  7. #7
    Membre expérimenté
    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
    Points : 1 633
    Points
    1 633
    Par défaut
    Rniamo, c'est exactement ce que fait cairo, tu décris un ensemble de points et de courbes, et cairo s'occupe de faire un rendu à l'écran, ou en pdf, ou en svg, ...

  8. #8
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    ok teuf13, ben il suffit alors d'avoir accès à ces informations pixéllisées...

  9. #9
    Membre expérimenté
    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
    Points : 1 633
    Points
    1 633
    Par défaut
    Mais il fait déjà tout ça cairo, tu peux dessiner sur 2 surfaces et lui dire d'en coller l'une sur l'autre en respectant les infos de transparence. Donc ça sert à rien de faire un bricolage en récupérant les pixels et tout ça

  10. #10
    Membre expérimenté
    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
    Points : 1 633
    Points
    1 633
    Par défaut
    http://cairographics.org/tutorial/
    Je jouerais avec cairo_paint_with_alpha ou cairo_mask(_surface?) si tu sais déjà générer des surfaces cairo avec les dessins qui t'intéressent.

Discussions similaires

  1. Problème temporisation pour un dessin
    Par Kalmos2 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 29/04/2008, 07h57
  2. Réponses: 6
    Dernier message: 06/12/2007, 09h33
  3. a propos gdk(pour le dessin)
    Par chokrijer dans le forum GTK+
    Réponses: 1
    Dernier message: 26/04/2007, 16h18
  4. Conseils pour le dessin
    Par tnarol dans le forum Windows
    Réponses: 3
    Dernier message: 21/09/2006, 13h18
  5. [C#] Quel controle pour le dessin + eviter clignotement
    Par JEG dans le forum Windows Forms
    Réponses: 10
    Dernier message: 08/10/2004, 11h28

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