Caraxtères graphiques

3 réponses
Avatar
Heu Bord
Salut =C3=A0 tous
Je suis d=C3=A9butant en python. Je veux =C3=A9crit un petit script qui des=
sine les caract=C3=A8res et les affiche comme tel.
Je voudrais avoir une piste

3 réponses

Avatar
Nicolas
Bonjour,
Le 29/05/2019 à 00:58, Heu Bord a écrit :
Salut à tous
Je suis débutant en python. Je veux écrit un petit script qui dessine les caractères et les affiche comme tel.
Je voudrais avoir une piste

Ca veut dire quoi "un petit script qui dessine les caractères et les
affiche comme tel." ?
Nicolas
Avatar
Pascal J. Bourguignon
Heu Bord writes:
Salut à tous
Je suis débutant en python. Je veux écrit un petit script qui dessine les caractères et les affiche comme tel.
Je voudrais avoir une piste

Il faut diviser le problème.
Pour dessiner quoi que ce soit, il faut une bitmap (ou un pixmap pour
dessiner en couleur).
Pour dessiner des caractères, il faudra avoir une description de la
forme du caractère à dessiner, et effectuer le dessin, en ajustant la
couleur des pixels dans la bitmap (noir/blanc) ou la pixmap (niveau de
gris, couleurs).
Pour afficher cette image (bitmap ou pixmap), il faut un écran
graphique, et en général, un système d'interface graphique à base de
fenêtre. Ce qui signifie qu'il faudra ouvrir une fenêtre, et transférer
l'image pour l'affichier.
Le choix du système d'interface graphique est imposé par le système sur
lequel le programme devra fonctionner; dans certains cas, on a le choix
de la bibliothèque d'outils graphiques (toolkit) qu'on peut utiliser
(par exemple, si le système graphique est X11 on peut utiliser
différents toolkits et systèmes de gestion des fenêtres).
Une fois qu'on a plus d'information sur ces éléments, on peut effectuer
une recherche sur les bibliothèques python existant pour s'interfacer
avec, et pour manipuler directement un python les images (bitmap ou
pixmap).
Tu ne dis pas non plus d'où tu vas obtenir la description de la forme
des caractères. Si tu veux utiliser une description standard (par
exemple, une police de caractère TrueType), alors on se demande pourquoi
tu veux implémenter le dessin en python, alors que les systèmes
d'interfaces graphiques sont capable d'afficher du texte directement à
partir de ces fichiers de police de caractères. Alors je suppose que tu
veux écrire tes propres description de caractères. Mais sinon, il
faudrait aussi chercher des bibliothèques python pour lire les fichiers
définissant ces polices de caractères, en extraire la description d'un
caractère, et l'interpréter pour effectuer son dessin.
On peut vouloir faire ça lorsqu'on veut définir comme caractère des
symboles qui n'existent pas dans les polices et dans les encodages
standard.
Par exemple, dans l'application GSharp (éditeur de partition musicale
implémenté en Common Lisp), on implémente un système similaire à
metafont pour définir et dessiner les caractères, et on défini de tels
caractères pour les clés musicales, sous forme vectorielle.
https://github.com/informatimago/gsharp/blob/master/mf.lisp
https://github.com/informatimago/gsharp/blob/master/sdl.lisp#L316
Dans ce cas, le système d'interface graphique utilisé est CLIM, et on
dessine "directement" dans la fenêtre avec clim:draw-design dans
draw-shape, qui transforme la description vectorielle de la forme
(effectue la "rasterisation") en bitmap, et l'affiche.
https://github.com/informatimago/gsharp/blob/master/sdl.lisp#L289
Avec des systèmes graphiques plus rudimentaires, ça peut être plus
"intéressant".
Pour un débutant, il est aussi possible d'utiliser un système graphique
simplifié comme PGL (Portable Graphics Library). Il semble que pgl en
python utilise TkInter pour l'interface graphique, et ne passe pas par
le programme Java SPL comme backend pour effectuer l'affichage dans le
système de fenêtre de l'ordinateur, alors c'est encore plus simple.
http://people.reed.edu/~esroberts/csci121/pgldoc/index.html
http://people.reed.edu/~esroberts/csci121/programs/pgl-v0.84.zip
--
__Pascal J. Bourguignon__
http://www.informatimago.com
Avatar
Pascal J. Bourguignon
"Pascal J. Bourguignon" writes:
Heu Bord writes:
Salut à tous
Je suis débutant en python. Je veux écrit un petit script qui dessine les caractères et les affiche comme tel.
Je voudrais avoir une piste


Aussi, si ce qui t'interesse c'est simplement la partie dessin des
caractères, on peut faire sans la complexité de la partie graphique.
Un de mes premier programme consistait à afficher des textes (des mots)
hébreux sur un terminal ASCII, non-graphique, en "ASCII-Art".
Comme le programme banner.
$ banner Salut
&&& && &
& & & &
& &&&& & & & &&&&&
& & & & & &
& &&&&& & & & &
& & & & & & & &
&&& &&&& & &&& &&&& & &&
Les caractères peuvent être définis "graphiquement":
letter["S"]=[
" &&& ",
"& & ",
" & ",
" & ",
" & ",
"& & ",
" &&& "]
Ou tu peux les dessiner toi-même à partir d'une autre description
(vectorielle, ou autre). Il suffit de definir une classe
AsciiArtImage qui a un tableau de chaînes, et des méthodes
"graphiques" pour les modifier:
aai.set_pixel(x,y,"&")
aai.draw_line(x0,y0,x1,y1,"*")
aai.draw_arc(x,y,r,theta0,theta1,"*")
aai.print()
etc.
--
__Pascal J. Bourguignon__
http://www.informatimago.com