Je dois convertir une certaine couleur (en hexagone) pour brosser. J'ai besoin de le faire dans le code. p>
Comment puis-je le faire? p>
3 Réponses :
public static SolidColorBrush GetColorFromHexa(string hexaColor) { return new SolidColorBrush(Color.FromArgb( Convert.ToByte(hexaColor.Substring(1, 2), 16), Convert.ToByte(hexaColor.Substring(3, 2), 16), Convert.ToByte(hexaColor.Substring(5, 2), 16), Convert.ToByte(hexaColor.Substring(7, 2), 16) ) ); } Hope this helps
Cette apparence copiée de Weblogs. ASP.NET/LDUVEAU/ARCHIVE/2009/04/22/... et il jette une exception si elle est utilisée avec la valeur fournie dans la question.
Même commentaire qu'avant. Paris sur une chaîne de 8 caractères, lorsque le code de couleur peut être inférieur à celui de 3.
//this would be initialized somewhere else, I assume string hex = "#00E4FF"; //strip out any # if they exist hex = hex.Replace("#", string.Empty); byte r = (byte)(Convert.ToUInt32(hex.Substring(0, 2), 16)); byte g = (byte)(Convert.ToUInt32(hex.Substring(2, 2), 16)); byte b = (byte)(Convert.ToUInt32(hex.Substring(4, 2), 16)); SolidColorBrush myBrush = new SolidColorBrush(Color.FromArgb(255, r, g, b));
Sur la base de la définition de MSDN définie la structure de couleur, une couleur valide est également #fff ainsi que #ffff ainsi que #ffffff ainsi que # 00ffffff. Dans les deux cas, vous pariez que la chaîne hexagonale est de six caractères.
Eh bien, c'est ce que la question posée. Devrais-je avoir écrit un exemple pour toutes les permutations de couleurs possibles ou pouvons-nous tout simplement accepter de permettre à la question auteur un peu de liberté d'utiliser cette matière grise?
Techniquement, vous avez absolument raison. La matière grise devrait ... être utilisée de manière appropriée. Cependant, c'est mon avis que c'est notre responsabilité en tant que développeurs d'écrire un code robuste et évolutif; Nous devrions nous efforcer d'écrire des modules / code couplés lâches pouvant faire le travail de manière à permettre la maintenabilité et la réévaluabilité.
Je suis entièrement d'accord. C'est pourquoi OP devrait écrire un code robuste et évolutif. Ceci est simplement une réponse technique, pas une solution évolutive robuste. OP était coincé vouloir connaître un concept, alors ces réponses l'ont aidé. De toute évidence, nous pourrions parcourir Stackoverflow et trouver des instances où nous pouvons améliorer les exemples de code et les rendre plus réutilisables, mais c'est un peu présomptueux que je devrais construire un module sans rien savoir sur ce que veut de savoir ce que veut. Simple est souvent plus efficace dans ce contexte, sinon la solution est perdue au milieu du bruit.
J'en ai besoin de l'une d'entre elles qui fonctionne également avec la "formulaire hexadécimale sténographique" à 3 chiffres et les versions de canal MS alpha (pour Silverlight / WPF Strong> ), donc proposé cette version pour couvrir tous les formats de couleur numériques EM>: p> pour un pinceau que vous l'utilisez comme ceci: P> à l'aide de byte.parse est plus efficace que convertir et ne nécessite aucun casting. em> p> mise à jour:
Compensats de sous-chaîne fixe pour le boîtier 8. p> h2>
Merci d'avoir comptabilisé toutes les variantes de la structure de couleur. C'est probablement comment le convertisseur de couleurs interne fonctionne également. De ce qui est vu c'est la réponse la plus complète jusqu'à présent.
@Meirion Hughes: Merci pour la correction. Couper / pâte provoque 99% de mes bugs de nos jours :)