色の名前を取得する方法はありますか?色はSystem.Windows.Media.Colorで、探している名前はSystem.Windows.Media.Colorsモジュールのプロパティとして定義されています。WPF/Silverlight:色の名前を見つける
0
A
答えて
4
この拡張メソッドを試してみてください。
static class ColorHelpers
{
public static string GetColorName(this Color color)
{
return _knownColors
.Where(kvp => kvp.Value.Equals(color))
.Select(kvp => kvp.Key)
.FirstOrDefault();
}
static readonly Dictionary<string, Color> _knownColors = GetKnownColors();
static Dictionary<string, Color> GetKnownColors()
{
var colorProperties = typeof(Colors).GetProperties(BindingFlags.Static | BindingFlags.Public);
return colorProperties
.ToDictionary(
p => p.Name,
p => (Color)p.GetValue(null, null));
}
用途:
Color c = ...;
string name = c.GetColorName();
EDIT:これは大体Meleakの答えと同じですが、反射のみ行われるので、それはより速くする必要があります一度...
0
Dictionを入力するThomas Levesqueからの修正された回答進ときだけで代わりに起動時のコストを取るのに必要な第一、(ユーザーがカメのペンの色を変更することが知られている色の名前を発音することができるように、音声認識・ドリブンタートルグラフィックスで使用する予定)
//Project: SpeechTurtle (http://SpeechTurtle.codeplex.com)
//Filename: ColorUtils.cs
//Version: 20150901
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Windows.Media;
namespace SpeechTurtle.Utils
{
/// <summary>
/// Color-related utility methods
/// </summary>
public static class ColorUtils //based on http://stackoverflow.com/questions/4475391/wpf-silverlight-find-the-name-of-a-color
{
#region --- Fields ---
private static Dictionary<string, Color> knownColors; //=null
#endregion
#region --- Methods ---
#region Extension methods
public static string GetKnownColorName(this Color color)
{
return GetKnownColors()
.Where(kvp => kvp.Value.Equals(color))
.Select(kvp => kvp.Key)
.FirstOrDefault();
}
public static Color GetKnownColor(this string name)
{
Color color;
return GetKnownColors().TryGetValue(name, out color) ? color : Colors.Black; //if color for name is not found, return black
}
#endregion
public static Dictionary<string, Color> GetKnownColors()
{
if (knownColors == null)
{
var colorProperties = typeof(Colors).GetProperties(BindingFlags.Static | BindingFlags.Public);
knownColors = colorProperties.ToDictionary(
p => p.Name,
p => (Color)p.GetValue(null, null));
}
return knownColors;
}
public static string[] GetKnownColorNames()
{
return GetKnownColors().Keys.ToArray();
}
#endregion
}
}
関連する問題
- 1. 列の名前を知っているテーブルを見つける?
- 2. 色のピクセル座標を見つける
- 3. 形と色の円を見つける
- 4. Linux - 文字列を含む名前のファイルを見つける
- 5. どのようにグリッドの名前を見つけるには?
- 6. イテレータの名前を見つける別の方法
- 7. Visual Studio 2010でコンテキストメニューの名前を見つける方法
- 8. 年、月、日で日の名前を見つける
- 9. 関数が返すオブジェクトの名前を見つける
- 10. 名前でFacebookのグループIDを見つける方法
- 11. 部分的な名前でファイルを見つけるには?
- 12. Mongoose:入力に似た名前を見つける
- 13. 名前でフォーム要素を見つける方法
- 14. Json Treeで名前でノードを見つける方法は?
- 15. 与えられた色の近くの色を見つける
- 16. $ _POSTは "名前"の値を見つけられません
- 17. Moongoose:別の選択肢で名前を見つけよう
- 18. Asp.Net MVC前のページを見つける
- 19. TFS:名前を変更して古いファイル名を見つける方法
- 20. ファイルを見つけて、名前を変えてunix bash
- 21. Schemeのリストに名前をつける
- 22. ドメイン名のIPを見つける
- 23. ストアドプロシージャのパラメータ名を見つける
- 24. 16進色で最も近いPMS色を見つけるか?
- 25. リッチテキストボックステキストからフォント名、サイズ、スタイル、テキストの色を見つける方法C#
- 26. Capybaraが名前で送信ボタンを見つけられない
- 27. SimpleXMLが名前空間要素を見つけられない
- 28. "良い"隣人 - グラフの色付けを見つけるアルゴリズム?
- 29. ローカライズ色の名前
- 30. Linq Distinct()名前で名前をつけるドロップダウンリスト
を意味しますかRGB値を提供し、名前付きカラー(存在する場合)を取得しますか? –
それはまさに私が欲しいものです。 –