Search this site
Embedded Files
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • BBC BASIC
    • BBC OS
    • BBC MODULES
    • RUBRIQUES
    • LIENS

⇨ MENU ⇨ BBC BASIC

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

vos remarques, vos commentaires et de vos suggestions.

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.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse