Comment puis-je vérifier si deux structures System.Drawing.Color représentent la même couleur en profondeur de couleur 16 bits (ou généralement en fonction de la valeur de Screen.PrimaryScreen.BitsPerPixel)? Supposons que je mette Form.TransparencyKey à Value1 (de type Color), je veux vérifier que lorsque l'utilisateur sélectionne une nouvelle couleur d'arrière-plan pour le formulaire (Value2), je ne mets pas le formulaire entier en transparence.Comment vérifier si deux structures System.Drawing.Color représentent la même couleur dans une profondeur de couleur de 16 bits?
Sur les écrans de profondeur de couleur de 32 bits je compare simplement les deux valeurs:
if (Valeur1 == Valeur2)
Cependant, cela ne fonctionne pas sur les écrans de profondeur de couleur de 16 bits, comme plus de valeurs de couleur pour les Valeur2 représenterait la même couleur 16 bits que Value1, comme je l'ai découvert à la dure.
Juste pour comprendre, si vous pouvez me donner plus de détails sur pourquoi vous multipliez la valeur rouge avec 32, la valeur verte avec 64 et la valeur bleue avec 32? Merci – AnAurelian
Pour la même raison que nobugz réponse: couleur RVB 16 bits (vrai) dans Windows sont constitués de 5, 6 et 5 bits (2 à la puissance de 5 est de 32, 2 à la puissance de 6 est de 64). Par conséquent, si vous divisez les octets Rouge et Bleu d'origine par 256 et que vous les multipliez par 32, vous obtenez la représentation arrondie à 5 bits. La même chose s'applique aux 6 bits de Green. – Webleeuw