Modifications

Sauter à la navigation Sauter à la recherche
4 558 octets ajoutés ,  4 avril 2016 à 20:13
Ligne 40 : Ligne 40 :     
Ces couleurs sont stockées dans des tuples {{fname|(rouge,vert,bleu)}} '''mais attention''' ces valeurs numériques respectent la codification RGB565 (couleur 16-bit, R:5-bit; G:6-bit; B:5-bit).
 
Ces couleurs sont stockées dans des tuples {{fname|(rouge,vert,bleu)}} '''mais attention''' ces valeurs numériques respectent la codification RGB565 (couleur 16-bit, R:5-bit; G:6-bit; B:5-bit).
 +
 +
Essayez d'utiliser les couleurs prédéfinie dès que cela est possible.
 +
 +
=== RGB888 vers RGB565 ===
 +
Le standard de définition de couleur c'est la couleur RGB en 24 bits (aussi dit "RGB888"). Dans cette codification, chacune des couleurs couleurs rouge, vert, bleu est représentée par un octet (donc 8 bits). Au total, il faut donc 3 octets pour représenter une couleur (soit 50% d'espace en plus que le codage RGB565).
 +
 +
Il reste cependant des cas ou vous aurez besoin de créer vos propres couleurs RGB.
 +
 +
Personnellement, j'adore l'outil "[http://www.w3schools.com/colors/colors_picker.asp Color Picker de W3Schools]", outils qui affiche également la valeur RGB 888 de la couleur.
 +
 +
Le fichier {{fname|colors.py}} à récemment reçu la fonction {{fname|rgbTo565()}} qui permet de créer une couleur RGB565 à partir de la codification usuelle RGB 888 (24 bits, chaque valeur RGB ayant une valeur entre 0 et 255).
 +
 +
Voici un exemple utilisant la fonction {{fname|rgbTo565()}} pour créer un dégradé de couleur.
 +
 +
<nowiki># Creation d'un dégradé de couleur vertes à partir
 +
# d'une codification RGB888. Converti les couleurs RGB888 vers RGB565
 +
from lcd import *
 +
l = LCD( rate=21000000 )
 +
 +
colorStep = 11        # faire sauter les couleur 8 bits par pas de 11
 +
boxes = 255//colorStep # Nous allons dessiner x boites
 +
for i in range( 0, boxes+1 ):
 +
    iColorValue = i * colorStep
 +
 
 +
    # Convertir la couleur en RGB565 pour le TFT
 +
    aColor = rgbTo565(iColorValue,255,iColorValue)
 +
 +
    yStart = 0+i*(320//boxes)
 +
    yHeight = 320//boxes
 +
    print( '%i, %i = %i' % (yStart, yHeight, yStart+yHeight) )
 +
    l.drawRect( 0, yStart, 240, yHeight, aColor, border=3, fillcolor=aColor )</nowiki>
 +
 +
[[Fichier:MicroPython-ILI9341-Exemples-RGB565.jpg|320px]]
    
== La couleur de fond ==
 
== La couleur de fond ==
Ligne 115 : Ligne 148 :  
* '''color''' : couleur du tracé (tuple (r,g,b) suivant la codification RGB565)
 
* '''color''' : couleur du tracé (tuple (r,g,b) suivant la codification RGB565)
   −
Voici quelques exemples de d'utilisation allant jusqu'au tracé d'une sinusoide
+
Voici quelques exemples de d'utilisation allant jusqu'au tracé d'une sinusoïde.
 +
 
 +
=== Exemple 1 ===
 +
Cet exemple permet de tester différents tracés (et optimisation) ainsi que quelques pièges (tracé de lignes à rebours).
 +
 
 +
<nowiki>from lcd import *                                                         
 +
l = LCD( rate=21000000 )                                                   
 +
l.drawLine( 20, 155, 121, 31, RED )                                       
 +
l.drawLine( 121, 155, 20, 31, GREEN )                                     
 +
l.drawLine( 20,31, 121, 31, BLUE )                                         
 +
l.drawLine( 121,155, 20,155, ORANGE )                                     
 +
l.drawLine( 121,31, 121,155, YELLOW )
 +
l.drawLine( 20,155, 20,31, CYAN )</nowiki>
 +
 
 +
Ce qui produit le résultat suivant:
 +
 
 +
[[Fichier:MicroPython-ILI9341-Exemples-60.jpg|320px]]
 +
 
 +
=== Exemple 2 ===
 +
Cet exemple effectue un tracé sur tout l'écran et permet d'évaluer la rapidité du tracé.
 +
 
 +
<nowiki>from lcd import *                                                         
 +
l = LCD( rate=21000000 )   
 +
# Tracé de haut en bas                                               
 +
for i in range( 0, 320, 8 ):
 +
    l.drawLine( 0,0, 240, i, CYAN )
 +
# tracé de gauche à droite
 +
for i in range( 0, 240, 8 ):
 +
    l.drawLine( 0,0, i, 320, MAGENTA )</nowiki>
 +
 
 +
Ce qui produit le résultat suivant:
 +
 
 +
[[Fichier:MicroPython-ILI9341-Exemples-61.jpg|320px]]
 +
 
 +
=== Exemple 3 ===
 +
Utilisation de la fonction {{fname|drawLine()}} pour un tracé graphique
 +
 
 +
<nowiki>from lcd import *
 +
from math import sin, trunc, radians
 +
 
 +
l = LCD( rate=21000000 )
 +
# Draw axis
 +
l.drawLine( 0,0, 240, 0, CYAN )
 +
l.drawLine( 120, 0, 120, 320, CYAN )
 +
 
 +
# Draw a sinus plot (in the height of the screen)
 +
previous=None
 +
for degree in range(0,320):
 +
    # screen x axis = SIN, screen y axis = degrees
 +
    point = ( trunc(120+sin(radians(degree))*120) , degree )
 +
    if previous != None:
 +
        l.drawLine( previous[0], previous[1], point[0], point[1], YELLOW )
 +
    previous = point</nowiki>
 +
 
 +
[[Fichier:MicroPython-ILI9341-Exemples-62.jpg|320px]]
    
== Rectangle ==
 
== Rectangle ==
Ligne 137 : Ligne 224 :     
== Cercles et ovales ==
 
== Cercles et ovales ==
Il est également possible de dessiner des cercles et ovales facilement à l'aide de {{fname|drawCircle}}, {{fname|drawCircleFilled}}, {{fname|drawOvale
+
Il est également possible de dessiner des cercles et ovales facilement à l'aide de {{fname|drawCircle}}, {{fname|drawCircleFilled}}, {{fname|drawOvale}}
   −
  <nowiki>drawCircle( x, y, radius, color, border=1, degrees=360 )
+
=== Cercles ===
 +
  <nowiki>drawCircle( x, y, radius, color, border=1, degrees=360, startangle=0 )
 
drawCircleFilled( x, y, radius, color)</nowiki>
 
drawCircleFilled( x, y, radius, color)</nowiki>
   Ligne 154 : Ligne 242 :  
[[Fichier:MicroPython-ILI9341-Exemples-40.jpg|320px]]
 
[[Fichier:MicroPython-ILI9341-Exemples-40.jpg|320px]]
    +
=== Arcs ===
 +
La fonction {{fname|drawCircle}} dispose des paramètres '''degrees''' et '''startangle''' qui permettent de dessiner des arcs.
 +
 +
* '''degrees''' - nombres de degrés à dessiner
 +
* '''startangle''' - angle de départ (l'angle 0 est au nord et suis le sens horlogique).
 +
 +
[[Fichier:MicroPython-ILI9341-Exemples-42.jpg|480px]]
 +
 +
<nowiki>from lcd import *
 +
l = LCD( rate=21000000 )
 +
l.drawCircle( 100, 100, 25, YELLOW, border=1, startangle=0, degrees=90 )
 +
l.drawCircle( 100, 100, 25, RED, border=1, startangle=90, degrees=90 )
 +
l.drawCircle( 100, 100, 25, GREEN, border=1, startangle=180, degrees=90 )
 +
l.drawCircle( 100, 100, 25, CYAN, border=1, startangle=270, degrees=90 ) </nowiki>
 +
 +
[[Fichier:MicroPython-ILI9341-Exemples-43.jpg|320px]]
 +
 +
=== Ovales ===
 
{{fname|drawOvalFilled()}} permet de dessiner un ovale (rempli)
 
{{fname|drawOvalFilled()}} permet de dessiner un ovale (rempli)
  
30 894

modifications

Menu de navigation