TINT
DESCRIPTION.
La fonction TINT() retourne le code de la couleur physique (RVB) du point aux coordonnées fournies.
SYNTAXE.
TINT( abscisse , ordonnee )
REMARQUES.
abscisse et ordonnee doivent être des nombres entiers compris entre −32768 et +32767.
abscisse définit la nouvelle position horizontale, dans la fenêtre de sortie, du point d'origine.
ordonnee définit la nouvelle position verticale, dans la fenêtre de sortie, du point d'origine.
La fonction TINT() retourne un nombre contenant la quantité de rouge, de vert et de bleu de la couleur physique. Si le point aux coordonnées ( abscisse , ordonnee ) est en dehors de la fenêtre de sortie, la fonction TINT() retournera -1.
Chaque composant de la couleur physique, le rouge, le vert et le bleu, peuvent avoir une valeur comprise entre de 0 à 255, soit de 00 à FF en hexadécimal.
La valeur retournée par la fonction TINT() est un entier de 32 bits, qui peut donc valoir, s'il est différent de -1 :
- de 0 à 16777215 en décimal ou ;
- de 000000 à FFFFFF en hexadécimal (soit BBVVRR) ou ;
- de 000000000000000000000000 à 111111111111111111111111 en binaire où la quantité de .
- rouge est placée en premier (les 8 bits de droite : xxxxxxxxxxxxxxxxRRRRRRRR ) ;
- vert est placée au centre (les 8 bits du centre : xxxxxxxxVVVVVVVVxxxxxxxx ) ;
- bleu est placée en dernier (les 8 bits de gauche : BBBBBBBBxxxxxxxxxxxxxxxx ) ;
- les 8 autres bits de poids fort sont toujours à 0 sauf si la valeur retournée est -1.
La forme hexadécimale est la plus appropriée pour analyser la constitution de la couleur. Chaque composant étant représenté par 2 symboles.
MODE 8
GCOL 5
CIRCLE FILL 640 , 512 , 100
kpoint = TINT( 640 , 512 ) : REM - retourne une valeur decimale
khexa$ = STR$~( kpoint ) : REM - convertie la valeur retournee en hexadeciale
kformat$ = STRING$( 6 , "0" ) + khexa$ : REM - pour remplacer les teintes manquantes éventuellement
kcouleur$ = RIGHT$( kformat$ , 6 ) : REM - ne garde que les 6 derniers symboles
krouge$ = RIGHT$( kcouleur$ , 2 ) : REM - retourne la quantité de rouge en hexadecimal
kvert$ = MID$( kcouleur$ , 3 , 2) : REM - retourne la quantité de vert en hexadecimal
kbleu$ = LEFT$( kcouleur$ , 2 ) : REM - retourne la quantité de bleu en hexadecimal
PRINT kpoint , khexa$ , kformat$ , kcouleur$ , EVAL( "&" + kcouleur$ )
PRINT "Quantite de rouge " ; krouge$ ; " soit " ; EVAL( "&" + krouge$ )
PRINT "Quantite de vert " ; kvert$ ; " soit " ; EVAL( "&" + kvert$ )
PRINT "Quantite de bleu " ; kbleu$ ; " soit " ; EVAL( "&" + kbleu$ )
retourne
13500622 CECECE 000000CE00CE CE00CE 13500622
Quantite de rouge CE soit 206
Quantite de vert 00 soit 0
Quantite de bleu CE soit 206
Bien entendu, la variable kcouleur$ peut être obtenue directement avec :
kcouleur$ = RIGHT$( STRING$( 6 , "0" ) + STR$~( TINT( 640 , 512 ) ) , 6 )
Rappel : Avec BBC BASIC SDL 2.0 une points graphique corresponds en réalité à deux pixels. Par exemple, en MODE 8, la fenêtre de sortie a une surface graphique de 640 x 512 points graphiques soit une surface d'image de 1280 x 1024 pixels. Comme les valeurs retournées par certaines variables système sont exprimées en points graphiques, il faudra les multiplier par 2 pour obtenir le nombre de pixels équivalents. Pour pallier à cet inconvénient, il est fortement recommandé de n'utiliser que des valeurs pairs pour désigner les coordonnées des tracés et des dessins.
Pour connaitre la couleur logique (code dans la palette) d'un point, on utilisera la fonction POINT().
RUBRIQUES.
La gestion des couleurs pour plus de détails sur la gestion des couleurs logiques et physiques.
Les dessins et les graphismes pour plus de détails sur la création de dessins et de graphismes.
EXEMPLE.
MODE 8
kpoint = -1
FOR kcouleur = 0 TO 15
GCOL kcouleur
RECTANGLE FILL 20 + ( 75 * kcouleur ) , 500 , 74 , 150
NEXT kcouleur
PRINT TAB( 25 , 17 ) "Deplacez le pointeur de la souris,"
PRINT TAB( 26 , 18 ) "pour connaitre un code couleur."
REPEAT
MOUSE kabscisse , kordonnee , kbouton
IF kpoint <> TINT( kabscisse , kordonnee ) THEN
kpoint = TINT( kabscisse , kordonnee )
khexa$ = "000000" + STR$~( kpoint )
kcouleur$ = RIGHT$( khexa$ , 6 )
PRINT TAB( 30 , 10 ) "Code de la couleur : " ; kcouleur$ ; ". "
ENDIF
WAIT( 10 )
UNTIL FALSE
END
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.