PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > Rafraichir un bitmap à l'écran
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Rafraichir un bitmap à l'écran

Réponse
 
LinkBack Outils de la discussion
Vieux 03/08/2007, 09h58   #1
al
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Rafraichir un bitmap à l'écran

Bonjour à tous,

c'est mon premier post sur ce forum, et je suis plutôt jeune en Python, et
assez vieux en programmation ;-). Je dois avouer que ce langage me plait
beaucoup, par sa concision, sa clarté et surtout son élégance (J'avoue
cependant que si Python était le premier langage à reprendre l'idée de mon
ami Canarlake, ce ne serait pour me déplaire :
http://canarlake.org/index.cgi?theme=liberezexpressions )

Venons en à mon problème :
J'ai créé un bitmap avec Image.new, que je manipule avec des getpixel /
putpixel. Pour l'afficher à l'écran, je crée un ImageTk.PhotoImage, que que
je place ensuite dans un create_image d'un Canvas (TkInter).

Ma question est : comment rafraîchir l'écran à chaque fois que je fais des
opération dans le bitmap. Je pensais que c'était une liaison dynamique, pas
du tout. J'ai cherché dans Google, je n'ai rien trouvé de probant.

J'en suis donc réduit à détruire le create_image par un Canvas.delete, puis
à le recréer ! C'est pas optimum et je pense qu'il y a moyen de faire mieux
et plus simple (j'ai cherché un méthode de type CopyPixels, redraw, BitBlt,
etc... sans succès).

Merci de vos lumières.


  Réponse avec citation
Vieux 03/08/2007, 10h34   #2
Jerome
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Rafraichir un bitmap à l'écran

al wrote:
> Bonjour à tous,


Bonjour

>
> c'est mon premier post sur ce forum, et je suis plutôt jeune en Python, et
> assez vieux en programmation ;-). Je dois avouer que ce langage me plait
> beaucoup, par sa concision, sa clarté et surtout son élégance (J'avoue
> cependant que si Python était le premier langage à reprendre l'idée de mon
> ami Canarlake, ce ne serait pour me déplaire :
> http://canarlake.org/index.cgi?theme=liberezexpressions )


Je ne suis pas complètement convaincu par la démonstration de ton ami,
c'est à mon sens plus une solution pratique pour détourner la
philosophie objet du langage avec une syntaxe fonctionnelle.

Qu'est-ce qui empêche d'écrire nab = (a-b).norme() plutôt que de se
forcer à rajouter une syntaxe comme nab = (b-a).(sqrt(self.x**2 +
self.y**2 + self.z**2)) ? La création d'une classe implique
nécessairement une volonté de factorisation du code et du comportement
d'un objet.

>
> Venons en à mon problème :
> J'ai créé un bitmap avec Image.new, que je manipule avec des getpixel /
> putpixel. Pour l'afficher à l'écran, je crée un ImageTk.PhotoImage, que que
> je place ensuite dans un create_image d'un Canvas (TkInter).
>
> Ma question est : comment rafraîchir l'écran à chaque fois que je fais des
> opération dans le bitmap. Je pensais que c'était une liaison dynamique, pas
> du tout. J'ai cherché dans Google, je n'ai rien trouvé de probant.
>
> J'en suis donc réduit à détruire le create_image par un Canvas.delete, puis
> à le recréer ! C'est pas optimum et je pense qu'il y a moyen de faire mieux
> et plus simple (j'ai cherché un méthode de type CopyPixels, redraw, BitBlt,
> etc... sans succès).


Ce sont des fonctions qui sont disponibles avec wxPython que je trouve
personnellement plus performante et plus puissante que TkInter. Pour ton
problème, as-tu essayé de dessiner avec l'équivalent du putpixel pour
les canvas TkInter lorsque tu modifies ton image ?

>
> Merci de vos lumières.
>
>

  Réponse avec citation
Vieux 03/08/2007, 10h53   #3
al
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Rafraichir un bitmap à l'écran

> Ce sont des fonctions qui sont disponibles avec wxPython que je trouve
> personnellement plus performante et plus puissante que TkInter. Pour ton
> problème, as-tu essayé de dessiner avec l'équivalent du putpixel pour
> les canvas TkInter lorsque tu modifies ton image ?


Pour l'instant je suis en phase d'apprentissage, petit bout par petit bout !
L'aspect Tk étant relativement laid (du moins sous Linux), je compte bien
passer plus tard à wxPython, Qt ou GTK !!!

Pour dessiner directement sur un canvas le seul équivalent que je voie est
create_rectangle, mais c'est beaucoup plus lent (et il me manque le
getpixel), car ça crée un objet à chaque fois, alors que là je veux juste
faire de la manipulation brute de pixels. Pensait tu à une autre méthode de
canvas que je n'aurai pas vu ?
  Réponse avec citation
Vieux 03/08/2007, 11h01   #4
Jerome
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Rafraichir un bitmap à l'écran

al wrote:
>> Ce sont des fonctions qui sont disponibles avec wxPython que je trouve
>> personnellement plus performante et plus puissante que TkInter. Pour ton
>> problème, as-tu essayé de dessiner avec l'équivalent du putpixel pour
>> les canvas TkInter lorsque tu modifies ton image ?

>
> Pour l'instant je suis en phase d'apprentissage, petit bout par petit bout !
> L'aspect Tk étant relativement laid (du moins sous Linux), je compte bien
> passer plus tard à wxPython, Qt ou GTK !!!


Tu gagneras du temps à passer directement à une librairie plus évoluée

>
> Pour dessiner directement sur un canvas le seul équivalent que je voie est
> create_rectangle, mais c'est beaucoup plus lent (et il me manque le
> getpixel), car ça crée un objet à chaque fois, alors que là je veux juste
> faire de la manipulation brute de pixels. Pensait tu à une autre méthode de
> canvas que je n'aurai pas vu ?


Non, je n'ai jamais essayé de pousser TkInter pour voir ses
possibilités, je me suis arrêté à l'aspect "interface des années 80"
avant de considérer les autres. En lisant la doc j'aurais tenté le
create_rectangle aussi. En parcourant rapidement la doc je ne pense pas
qu'il existe une autre solution que ce que tu fais actuellement.
  Réponse avec citation
Vieux 03/08/2007, 11h26   #5
al
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Rafraichir un bitmap à l'écran

Jerome wrote:

> Tu gagneras du temps à passer directement à une librairie plus évoluée


Merci du conseil, étant fan de KDE je tenterai Qt

> Non, je n'ai jamais essayé de pousser TkInter pour voir ses
> possibilités, je me suis arrêté à l'aspect "interface des années 80"
> avant de considérer les autres. En lisant la doc j'aurais tenté le
> create_rectangle aussi. En parcourant rapidement la doc je ne pense pas
> qu'il existe une autre solution que ce que tu fais actuellement.


Merci, de toute façon c'est juste ma phase d'apprentissage, si je fais de
plus gros projets j'utiliserai d'autres librairies.
Concernant le look années 80, ça peut avoir son charme vintage "station de
travail sun" avec un thème Motif... ;-)
  Réponse avec citation
Vieux 03/08/2007, 12h23   #6
JB BUTET
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Rafraichir un bitmap à l'écran

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Salut

(snip)

il faut que ton image soit déclarées en variable globale... ou mieux :

tu fais un dico (qui peut contenir des objets) :
dic["image"] = monobjetimage

et ça permet de garder l'image.

Pour la rafraichir après changement, il y a une fonctione update() (je
te laisse chercher, ce mot clef est le bon)

A+

JB


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGsxBDetOZWwsO2AERArDZAKCFfFOO6Ux5IgYSsPIbRQ fN3a04lwCgowR/
4PAt0Zh2P1pDlem2rhkDY5E=
=oseI
-----END PGP SIGNATURE-----
  Réponse avec citation
Vieux 03/08/2007, 12h54   #7
Eric Brunel
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Rafraichir un bitmap à l'écran

On Fri, 03 Aug 2007 11:34:36 +0200, Jerome <jerome@nospam.com> wrote:
> Pour ton problème, as-tu essayé de dessiner avec l'équivalent du
> putpixel pour les canvas TkInter lorsque tu modifies ton image ?


Juste pour apporter une précision: il n'y a pas de putpixel sur les Canvas
Tkinter, et il n'y a pas de getpixel non plus. Un Canvas Tkinter est un
module de dessin *vectoriel*, et pas bitmap. Ceci permet par exemple de
faire:

r = monCanvas.create_rectangle(50, 50, 100, 100)

puis plus tard:

monCanvas.coords(r, 40, 30, 80, 150)

La variable r identifie un objet rectangle, que l'on manipule comme un
rectangle, et pas comme un ensemble de points. Ce qui n'est pas possible,
par contre, c'est de créer un rectangle, puis d'enlever des pixels dedans.

Le Canvas Tkinter est donc très utile pour faire des applis de dessin
vectoriel, et très em...bêtant pour faire du bitmap. En d'autres termes,
on est plus près d'Illustrator que de Photoshop.
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
  Réponse avec citation
Vieux 03/08/2007, 13h20   #8
al
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Rafraichir un bitmap à l'écran

Eric Brunel wrote:

> Le Canvas Tkinter est donc très utile pour faire des applis de dessin
> vectoriel, et très em...bêtant pour faire du bitmap. En d'autres termes,
> on est plus près d'Illustrator que de Photoshop.


C'est exactement ça, le Canvas manipule des sous-objets vectoriel, alors que
ce que je veux c'est rafraîchir un bitmap à l'écran.
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 22h43.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,14539 seconds with 16 queries