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

GUI Python Discussion :

taille des pixels


Sujet :

GUI Python

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut taille des pixels
    salut à tous
    soit le petit programme suivant qui utilise tkinter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    lafenetre = Tk()
    lecanevas = Canvas(lafenetre,bg='white',height=hauteur_aff,width=largeur_aff)
    lecanevas.pack(side=BOTTOM)
    for i in range(50):
        lecanevas.create_line(200+i,200+i,201+i,200+i)
    lafenetre.mainloop()
    le résultat est ici en image jointe :
    Nom : à_jeter.png
Affichages : 568
Taille : 5,1 Ko

    j'ai photographié la partie de l'écran contenant le segment et enregistré cette photo d'écran avec "aperçu"

    j'ai un écran Rétina, or, j'ai l'impression d'avoir, en voyant ça, le vieil écran que pilotait mon Alice 4Ko de chez Matra & Hachette dans les années 85-86

    y a til un moyen avec tkinter d'affiner la précision des pixels

    ou bien dois-je oublier tk et passer à PyQt ?

    je précise en outre que le résultat quand je trace un cercle à la main (petit cercle) ou avec l'instruction create_oval de tk (grand cercle) n'est pas le même :
    Nom : àjeter2.png
Affichages : 573
Taille : 12,3 Ko

    Vinz

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Un pixel correspond à ce que sait faire la carte graphique (et l'écran).
    Si vous dessinez une ligne pixel par pixel comme dans votre exemple, vous devez réduire le "crénelage" dans votre code. Si vous demandez au GUI de tracer la ligne, il pourra faire de l'anti-crenelage.
    Et comme Tk et Qt utilisent le même hardware, çà devrait faire la même chose.
    note: lire la documentation sur l'épaisseur d'une ligne qui peut ajouter des "pixels".

    Mais je n'ai peut être pas compris votre question...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    merci de la réponse

    voici un code avec plus de points :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in range(500):
        lecanevas.create_line(200+i/10,200+i/10,201+i/10,200+i/10)
    for i in range(5000):
        lecanevas.create_line(300+i/100,200+i/100,301+i/100,200+i/100)
    si je fais une capture d'écran les deux donnent la même chose :
    Nom : à_jeter3.png
Affichages : 466
Taille : 5,9 Ko
    mais c'est sans doute parce que je fais une copie d'écran
    en fait je ne sais pas exporter l'image de la fenêtre Tk de Python en un fichier graphique…
    comment fait-on ?

    autre question :
    vous parlez de l'algorithme d'antialiasing, j'ai regardé un peu l'algorithme de "Wu"
    est-il implémenté dans Tk ou PyQt ?
    ou dois je m'atteler à écrire un programme moi même ?
    mon souci est que je vais tracer des courbes mathématiques point par point, alors ce sera compliqué…

    Vinz

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Qt implémente l'antialias dans ses fonctions graphiques.

    L'essentiel est ici:

    http://pyqt.sourceforge.net/Docs/PyQt4/qpainter.html
    http://pyqt.sourceforge.net/Docs/PyQ...interpath.html

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    ok merci
    j'imaginais bien qu'il faudrait un jour ou l'autre passer par Qt
    j'ai maintenant un an de boulot pour rentrer dans l'usine…
    Vinz

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par elodouwen Voir le message
    vous parlez de l'algorithme d'antialiasing, j'ai regardé un peu l'algorithme de "Wu"
    est-il implémenté dans Tk ou PyQt ?
    ou dois je m'atteler à écrire un programme moi même ?
    mon souci est que je vais tracer des courbes mathématiques point par point, alors ce sera compliqué…
    Qt et Tk font de l'antialias pour vous pourvu que vous leur demandiez de tracer un peu plus qu'un pixel.
    Je ne comprend pas "tracer des courbes mathématiques point par point": le point mathématique est immatériel, le pixel non!
    Exemple: Pour les points définis par y = f(x) pour x dans [1..10], on peut poser que la longueur 1 correspond à 1 cm. Ca fait beaucoup de pixels et pas mal de choix pour interpoler une courbe entre ces points. Vous pouvez en plus "zoomer" pour que 1 cm soit représenté par x cm sur l'écran.

    Peut être lire le tuto sur matplotlib vous donnerait des idées sur comment tracer des courbes et çà utilise tkinter ou Qt au choix avec le mêmes rendus.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    je comprend la logique : l'antialiasing ne fonctionne pas si on ne trace qu'un seul pixel

    vous demandez ce que j'entend pas courbe mathématique point par point
    et bien, si je veux tracer y=f(x) :

    ◊ je cherche d'abord à savoir (j'ai pas encore trouvé) quelle est la largeur d'un pixel
    je veux dire par là que si je fais tracer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lecanevas.create_line(1,1,2,1)
    ,
    est-ce que ça trace exactement un pixel ?
    est-ce que cette instruction est adaptée à l'écran de l'ordinateur sur lequel Tk va faire son affichage ?

    ◊ et une fois que je sais cela je fais mon échantillonage, pour x de a jusqu'à b, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lecanevas.create_line(x,f(x),x+1,f(x))
    après avoir défini f
    utiliser l'antialiasing supposerait de reconstruire ma courbe par du bézier ou autre, ou des mini arcs de cercle ou des segments, ou d'utiliser un algorithme dépendant de f'(x)



    on devrait pouvoir trouver un algorithme d'antialiasing primaire en utilisant seulement f'(x), ce que l'utilisateur peut très bien rentrer dans le programme - en tous cas pour mes programmes cela ne me gêne pas.

    mais je bute sur la taille des pixels et sur la masse de travail pour apprivoiser Qt

    à ce sujet, un tutoriel simple et clair sur Qt ?

    merci

    V.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par elodouwen Voir le message
    mais par exemple l'image suivante, extraite de ce site :
    http://python.developpez.com/tutorie...688C910E4E.png
    si on la grossit seuleemnt 2x on voit tout de suite les pixels et il ne semble pas y avoir d'antialiasing.
    Si vous "grossissez" l'image (ou la figure) au bout d'un moment, vous allez voir les pixels.
    Pour ne pas les voir, il faudrait recalculer l'image pour lisser tout çà.
    i.e c'est plus compliqué qu'une simple "loupe".

    Le soucis est: tel que formulé, ce que vous cherchez n'existe peut être pas(ou je n'ai rien compris).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Regarde ici:

    http://vincent-vande-vyvre.developpe...qgraphicsitem/

    Il y a une partie qui concerne le tracé de primitive.

    Et puis comme ça quelqu'un l'aura lu.

Discussions similaires

  1. taille des integer sous Interbase 6.0
    Par kinda dans le forum InterBase
    Réponses: 4
    Dernier message: 04/04/2003, 11h34
  2. Taille des tabulations dans un TMemo ?
    Par dergen dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/01/2003, 19h38
  3. Taille des surfaces avec DirectDraw
    Par Shakram dans le forum DirectX
    Réponses: 5
    Dernier message: 09/09/2002, 00h42
  4. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 11h48
  5. Réponses: 2
    Dernier message: 30/05/2002, 10h19

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