Faire foregroundcolor noir ou blanc selon les antécédents
Quelque chose comme le calcul de la valeur moyenne des composantes rvb et de décider d'utiliser le noir ou le blanc?
Dois-je convertir RVB en VHS dans les premier pas " provoquer RGB n'est pas toujours ce que les yeux voient?
Je suis à l'aide de C#
- Cette question contient des réponses qui pourront vous aider: stackoverflow.com/questions/946544/...
- Liée (mais dupes eux-mêmes): stackoverflow.com/questions/3116260/... stackoverflow.com/questions/3942878/...
Vous devez vous connecter pour publier un commentaire.
Il arrive, j'ai besoin de cette fonction pour un projet, il n'ya pas longtemps.
Cette formule que j'ai trouvé sur le web à Nbd Tech qui traite à la perception de couleurs et de la formule de conversion. Le site donne beaucoup d'informations utiles.
Voici comment l'utiliser pour sélectionner le noir ou le blanc:
Vous pouvez utiliser une valeur autre que 130 la fréquence de coupure; il est de préférence.
Mise à jour: Selon Darel Rex Finley à son site:
Cette spécification suit Recommandation UIT-R BT.601 (ou Rec. 601 pour faire court). Le site que j'ai mentionné ci-dessus, Nbd Tech, n'a pas encore été mis à jour pour refléter ce changement.
Sur cette base, voici la mise à jour de la méthode (grâce à la DTI-Matt pour le commentaire):
Note sur le seuil de préférence:
Couleurs avec une luminosité perçue près du milieu (par exemple, 120-140) sera plus subjectif. Par exemple, on peut se demander si le rouge (FF0000), qui évalue à 139, est plus clair avec un noir ou un blanc de superposition.
R: .299
G: .587
B: .114
Color.Red
(R 255, G 0, B 0), il renvoie à une perception de la luminosité de 139 sur la base des valeurs ci-dessus. Je suis d'accord que le blanc-sur-rouge est préférable, mais le noir n'est pas illisible. Les valeurs dans la 120-140 gamme sera plus subjectif. Essayez un seuil de 140 avec des couleurs différentes pour voir si elle convient à votre but.ce sujet?
La
Color
struct prend en charge la conversion de HSB nativement.Vous pouvez ajouter un composant de la saturation ainsi, compte tenu de la saturation contribue également à l'apparente "légèreté".
Vous pourriez faire un simple calcul en fonction de la profondeur de couleur, si vous avez eu un #FFFFFF format de couleur, vous pouvez simplement ajouter les valeurs RVB et calculer si ils sont moins de la moitié du chemin.
Le max dans ce cas est de 255 (F x F = 256) par, il suffit donc de vérifier si c'est sous ce seuil:
Si la couleur du dessous, c'est plus sombre...utiliser un fond blanc. Si elle est au-dessus, c'est plus léger...utiliser un fond noir. Il n'est pas parfait, mais une idée pour commencer.
Si je suis bien comprendre, une approche pourrait être d'obtenir le fond d'écran de l'image, vérifier dans certains manoir de quelle couleur il est, puis de changer d'application de la couleur sur cette base.
Il y a un article sur geekpedia à propos de se procurer de l'actuel bureau de papier peint (et beaucoup de hits sur google), mais le principe de base est de saisir la valeur de registre du fond d'écran actuel:
Vous pouvez ensuite utiliser ce chemin pour ouvrir l'image. Ensuite, vous pouvez obtenir beaucoup de propriétés, telles que les dimensions et les pixel individuel des couleurs RGB.
De travail si elle est "plus blanc" ou "plus noir" vous avez beaucoup d'options.
Une idée pourrait être d'obtenir chaque pixel de couleur RVB, la moyenne des valeurs (pour obtenir la valeur de niveaux de gris) et la moyenne des niveaux de gris de la valeur de chaque pixel dans l'image. Si ce qui vient > 128 puis il pourrait être condidered d'être "blanc". Si < 128 puis "noir". Fondamentalement, vous devez décider de quel côté de la mi-gris ligne de démarcation les images des intensités de pixels moyenne.
Problèmes: peut-être une lenteur de la procédure, vous pouvez échantillon seulement de quelques pixels (par exemple, tous les 10 etc.) pour gagner du temps. Plus généralement, il semble assez hacky chose à faire à tous. Tirant les fichiers de l'utilisateur au moment de l'exécution et de jouer avec eux n'est guère propre, et il fournit le potentiel pour la sécurité et la stabilité. Que faire si l'image est duff ou corrompus, etc.
Personnellement, je vous suggère de simplement en donnant à l'utilisateur le choix de la couleur /le thème /la peau d'eux-mêmes, ou encore mieux de les laisser à le personnaliser!