Source: Scratch Wiki en français


Gestion des couleurs et « entrée-couleur » sur Scratch


La maîtrise des codages des couleurs compatibles avec Scratch permet de réaliser des projets de haut niveau.

Info
 Info :
Du fait du nombre de variables / listes à utiliser, elles ne sont pas données à l'avance. Chaque code utilise ses propres variables, mais vous pouvez utiliser les mêmes pour tous les blocs personnalisés.

Entrée-couleur

Une entrée-couleur ou entrée de couleur est une entrée ([#ff0000]::sensing) où l'utilisateur peut entrer une couleur depuis un menu déroulant.

Le menu déroulant des couleurs (intérieur).
LeSaviezVous
 LeSaviezVous :
Le format utilisé par les entrées-couleur est le HSL (lire page précédente du guide).

Gestion des codes RGB et Décimal

RGB

Le RGB (RVB en français, Rouge Vert Bleu) est le format idéal lorsqu'il s'agit de faire des comparaisons, modifications ou actions sur une couleur.

Cependant, le RGB ne peut pas être utilisé dans une entrée-couleur (du moins, pas sans conversion).

Décimal

Le Décimal est le format idéal pour les entrées-couleur et le plus simple à convertir en RGB (l'inverse est tout aussi simple).

Conversions

RGB vers Décimal

définir Couleur | Conv | RGB vers Déc (r) (g) (b)
mettre [couleur v] à (([plancher v] de (b)) + ((256) * (([plancher v] de (g)) + ((256) * ([plancher v] de (r))))))
Idée
 Idée :
L'utilisation du bloc ([plancher v] de ()) permet d'éviter des erreurs si un des canal n'est pas un entier.
Danger
 Danger :
Les valeurs r, g et b doivent être comprises entre 0 et 255, tous deux inclus.

Décimal vers RGB

définir Couleur | Conv | Déc vers RGB (déc)
mettre [canal r v] à ([plancher v] de ((déc) / (65536)))
mettre [canal g v] à ([plancher v] de (((déc) - ((canal r) * (65536))) / (256)))
mettre [canal b v] à ([plancher v] de (((déc) - ((canal r) * (65536))) - ((canal g) * (256))))

Actions sur les couleurs

Info
 Info :
Pour cette partie, vous devez uniquement utiliser le format RGB.

Mélanger des couleurs

définir Couleur | Act | Mélanger (r1) (g1) (b1) et (r2) (g2) (b2), mélange (%)
mettre [canal r v] à (arrondi de (((r1) * ((1) - ((%) / (100)))) + ((r2) * ((%) / (100)))))
mettre [canal g v] à (arrondi de (((g1) * ((1) - ((%) / (100)))) + ((g2) * ((%) / (100)))))
mettre [canal b v] à (arrondi de (((b1) * ((1) - ((%) / (100)))) + ((b2) * ((%) / (100)))))
Idée
 Idée :
(%::custom) permet de doser le mélange des couleurs :
  • à 50 (%), le mélange sera équilibré ;
  • à 25 (%), la couleur 1 sera majoritaire ;
  • à 75 (%), la couleur 2 sera majoritaire ;
  • à 0 (%), la couleur 1 sera la couleur retournée ;
  • à 100 (%), la couleur 2 sera la couleur retournée ;

Différence des couleurs

définir Couleur | Act | Différence entre (r1) (g1) (b1) et (r2) (g2) (b2)
mettre [différence r v] à ((r1) - (r2))
mettre [différence g v] à ((g1) - (g2))
mettre [différence b v] à ((b1) - (b2))
mettre [différence v] à ((différence r) + ((différence g) + (différence b)))
LeSaviezVous
 LeSaviezVous :
En informatique, la différence entre des couleurs est nommée seuil.

Réduire une couleur

définir Couleur | Act | Réduire (r) (g) (b), profondeur (%)
mettre [canal r v] à (arrondi de ((arrondi de ((r) / ((100) / (%)))) * ((100) / (%))))
mettre [canal g v] à (arrondi de ((arrondi de ((g) / ((100) / (%)))) * ((100) / (%))))
mettre [canal b v] à (arrondi de ((arrondi de ((b) / ((100) / (%)))) * ((100) / (%))))
Idée
 Idée :
(%::custom) permet de définir une profondeur :
  • 100 (%) conservera la profondeur de la couleur donnée ;
  • 50 (%) réduira de moitié la profondeur de la couleur donnée ;
  • 33 (%) réduira la profondeur de la couleur donnée par 3 ;
  • 25 (%) réduira la profondeur de la couleur donnée par 4 ;
  • 20 (%) réduira la profondeur de la couleur donnée par 5 ;
  • 10 (%) réduira la profondeur de la couleur donnée par 10 ;
  • 6.25 (%) réduira la profondeur de la couleur donnée par 16 ;
Danger
 Danger :
(%::custom) ne peut être égal à 0 (le programme effectuerait alors une division par 0) !

Aller plus loin

Couleur du stylo depuis RGBA

définir Couleur | A+L | Mettre la couleur du stylo à (r) (g) (b) (a)
mettre la couleur du stylo à (([plancher v] de (b)) + ((256) * (([plancher v] de (g)) + ((256) * ([plancher v] de (r))))))
mettre la [transparence v] du stylo à ((100) - (((255) - ((a) + ((255) * <(a) = ()>))) / (2.55)))
Idée
 Idée :
((a::custom) + ((255) * <(a::custom) = ()>)) défini la couleur du stylo comme opaque si le canal alpha n'est pas précisé.

Dégradé de couleurs

définir Couleur | A+L | Dégradé entre (r1) (g1) (b1) et (r2) (g2) (b2)
mettre [i v] à (0)
mettre la taille du stylo à (1)
aller à x:(-100) y:(100)
répéter (200) fois
Couleur | Act | Mélanger (r1) (g1) (b1) et (r2) (g2) (b2), mélange (i)::custom
Couleur | A+L | Mettre la couleur du stylo à (canal r) (canal g) (canal b) ()::custom
stylo en position d'écriture
mettre y à (100)
mettre y à (-100)
relever le stylo
ajouter (1) à x
ajouter (0.5) à [i v]
fin
Aperçu du dégradé, avec rgb(133, 92, 214)rgb(255, 171, 25)
Idée
 Idée :
Libre à vous de modifier le script pour qu'il puisse être exécuté entre deux points et avec une certaine qualité.



← Page précédente :↑ Page principale :Codage des couleurs sur ScratchCouleurs