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] épaisseur de ligne


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 [Cairo] épaisseur de ligne
    Bonjour,

    J'aimerais dessiner une ligne d'un pixel d'épaisseur, mais je n'y arrive pas, quand je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cairo_set_line_width (cr, 1);
    la ligne ne fait pas tout à fait un pixel d'épaisseur, elle fait au moins un millimètre d'épaisseur.
    Si je mets 0.1 au lieu de 1, la ligne garde la même épaisseur, mais devient transparente

    Je n'arrive pas à comprendre pourquoi, alors si vous pouvez m'aider...
    Merci

  2. #2
    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
    Je pense que c'est ce qui est traité dans http://www.cairographics.org/FAQ/#sharp_lines

  3. #3
    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
    Désolé, de ne pas avoir pu répondre plus tôt, j'avais pas mal de boulot

    Donc, si je comprends bien, il faut que j'arrondisse à 0.5 ?
    (J'ai pas tout compris, j'ai un peu de mal avec l'anglais )

    Voici mon code:
    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
    cairo_set_line_width (cr, dx);
    cairo_move_to (
            cr,
            0,
            -(HEIGHT/2) / y_scale - ABS_VAL(y_offset));
    cairo_line_to (
            cr,
            0,
            (HEIGHT/2) / y_scale + ABS_VAL(y_offset));
    cairo_stroke (cr);
    cairo_move_to (cr,
             -(WIDTH/2) / x_scale - ABS_VAL(x_offset),
             0);
     cairo_line_to (cr,
            (WIDTH/2) / x_scale + ABS_VAL(x_offset),
            0);
    cairo_stroke (cr);

    Voici ce qu cela donne:

    Avant:



    Après:


    Seulement, il y a un déréglage, ça fonctionne pas terriblement

  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
    Ah, tant que j'y suis, je ne comprends pas bien la difference entre cairo_stroke (cr); et cairo_stroke_preserve (cr);

    Merci encore pour les réponses

  5. #5
    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
    cairo_stroke trace le chemin et l'enlève du contexte cairo où il est stocké. cairo_stroke_preserve conserve le chemin dans la pile (comme toutes les variantes *_preserve) après avoir effectué l'opération de dessin correspondante.

  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
    Mais ça sert à quoi de le stocker dans une pile ? comment fait on pour y accéder après ?

    D'ailleurs, en fait, concrètement, sur le dessin, au final, je ne vois pas trop la différence

Discussions similaires

  1. Problème épaisseur de ligne 2D
    Par kitsune dans le forum OpenGL
    Réponses: 6
    Dernier message: 26/08/2009, 00h22
  2. Graphics : épaisseur des lignes
    Par Atharendil dans le forum Java ME
    Réponses: 4
    Dernier message: 02/03/2009, 22h33
  3. Problème de positionnement d'une ligne suivant l'épaisseur
    Par bubulemaster dans le forum Débuter
    Réponses: 5
    Dernier message: 01/02/2008, 17h28
  4. Package "easytab" & épaisseur de ligne dans tableau
    Par Surikat14 dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 3
    Dernier message: 27/08/2007, 13h53
  5. Réponses: 0
    Dernier message: 15/08/2007, 14h39

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