Cette classe semble fonctionner la plupart du temps. Je rencontre un problème lorsque j'ai une couleur HSL (210,45,72) qui est un bleu de sortie rvb(90,62,83) qui est un rouge. Je suis en train de monter sur son blog, mais presque jamais des charges lol. Cette classe utilise la Couleur.GetBrightness Méthode, de sorte qu'il présente effectivement PARTICULIERS la couleur de l'espace, pas de LGV. Ne fonctionne pour #bbe30a et #320ae3. J'ai essayé que deux valeurs et donna. Merci, @ironique. Il utilise uniquement GetBrightness RVB constructeurs, donc, comme je suis le seul à l'aide de la LGV constructeurs, je pense que je suis en sécurité. est un abus de langage dans le .NET framework. Il ne fait retour de la luminosité de la LGV espace.
Quelle que soit la catégorie que vous voulez dans votre projet.
Si vous avez la couleur de la teinte, luminance et saturation que les entiers, puis de donner à ces valeurs de la fonction, et le choix d'une couleur RVB seront retournés sous forme de nombre entier.
Ensuite, utilisez ColorTranslator.FromWin32 de traduire le retourné de couleur rvb, en tant qu'entier de Système.De dessin.Couleur de la structure.
Une autre façon est d'utiliser la Couleur.FromArgb(Int32), la surcharge de méthode, afin de créer la couleur que vous voulez en tant que Système.De dessin.Couleur de la structure de cet entier.
Une autre façon est de créer une instance de ColorConverter classe, et ensuite appeler ConvertFrom méthode, et de lui donner la Couleur RVB entier renvoyé par la ColorHLSToRGB fonction, ou appelez ConvertTo méthode avec le même premier argument, mais dans le deuxième argument d'entrée typeof(System.Drawing.Color). Puis de convertir l'objet retourné Système.De dessin.Couleur type de structure.
Le résultat est exactement ce que vous cherchez et de!
Vous pouvez également essayer d'autres algorithmes ou des façons que vous pouvez rechercher, découvrir et apprendre sur internet, sur la façon de convertir RVB de la couleur, en tant qu'entier de Système.De dessin.Couleur de la structure OU comment convertir HLS valeurs que les trois entiers du Système.De dessin.Couleur de la structure!
Un couple de choses à noter: H, L et S aller de 0 à 240. Gardez à l'esprit qu'une luminosité de 0 signifie noir, et 240 signifie blanc, donc si vous voulez une couleur pure (comme #F00), vous devez définir le L à 120. Aussi à noter: si vous allez utiliser l' Color.FromArgb(Int32) la surcharge, la couleur est un alpha de 0, ce qui signifie qu'il sera transparent. ColorTranslator.FromWin32() n'ont pas ce problème.
Riche Newman a créé un HSLColor classe qui peut être utilisé à la place du Système.De dessin.Couleur.
http://richnewman.wordpress.com/hslcolor-class/
Cette classe utilise la Couleur.GetBrightness Méthode, de sorte qu'il présente effectivement PARTICULIERS la couleur de l'espace, pas de LGV.
Ne fonctionne pour #bbe30a et #320ae3. J'ai essayé que deux valeurs et donna.
Merci, @ironique. Il utilise uniquement GetBrightness RVB constructeurs, donc, comme je suis le seul à l'aide de la LGV constructeurs, je pense que je suis en sécurité.
est un abus de langage dans le .NET framework. Il ne fait retour de la luminosité de la LGV espace.
OriginalL'auteur Matthew Vines
Ajouter la ligne suivante en dessous de la "à l'aide" espaces de noms dans votre fichier de code:
et avec du P/Invoke, ajoutez la fonction suivante:
Quelle que soit la catégorie que vous voulez dans votre projet.
Si vous avez la couleur de la teinte, luminance et saturation que les entiers, puis de donner à ces valeurs de la fonction, et le choix d'une couleur RVB seront retournés sous forme de nombre entier.
Ensuite, utilisez ColorTranslator.FromWin32 de traduire le retourné de couleur rvb, en tant qu'entier de Système.De dessin.Couleur de la structure.
Une autre façon est d'utiliser la Couleur.FromArgb(Int32), la surcharge de méthode, afin de créer la couleur que vous voulez en tant que Système.De dessin.Couleur de la structure de cet entier.
Une autre façon est de créer une instance de ColorConverter classe, et ensuite appeler ConvertFrom méthode, et de lui donner la Couleur RVB entier renvoyé par la ColorHLSToRGB fonction, ou appelez ConvertTo méthode avec le même premier argument, mais dans le deuxième argument d'entrée
typeof(System.Drawing.Color)
. Puis de convertir l'objet retourné Système.De dessin.Couleur type de structure.Le résultat est exactement ce que vous cherchez et de!
Vous pouvez également essayer d'autres algorithmes ou des façons que vous pouvez rechercher, découvrir et apprendre sur internet, sur la façon de convertir RVB de la couleur, en tant qu'entier de Système.De dessin.Couleur de la structure OU comment convertir HLS valeurs que les trois entiers du Système.De dessin.Couleur de la structure!
H
,L
etS
aller de 0 à 240. Gardez à l'esprit qu'une luminosité de 0 signifie noir, et 240 signifie blanc, donc si vous voulez une couleur pure (comme#F00
), vous devez définir leL
à 120. Aussi à noter: si vous allez utiliser l'Color.FromArgb(Int32)
la surcharge, la couleur est un alpha de 0, ce qui signifie qu'il sera transparent.ColorTranslator.FromWin32()
n'ont pas ce problème.OriginalL'auteur Farewell Stack Exchange