3

筆の色を文字列として保存する方法を探しています。たとえば、私は赤い色のブラシを持っています。ここで、テキストボックスに「赤」と書きたいと思います。

助けてくれてありがとう。

4

4 に答える 4

2

これはどんな種類のブラシですか?その描画名前空間の場合、brushは抽象クラスです。SolidBrushの場合、次のようにします。

Brush.Color.ToString()

それ以外の場合は、colorプロパティを取得し、ToString()メソッドを使用して色を文字列表現に変換します。

于 2012-10-11T14:37:06.493 に答える
2

fromBrushを使用して作成された場合は、 'sプロパティを使用できます。ColorSystem.Drawing.ColorColorName

それ以外の場合は、反射を使用して色を調べてみることができます

// hack
var b = new SolidBrush(System.Drawing.Color.FromArgb(255, 255, 235, 205));
var colorname = (from p in typeof(System.Drawing.Color).GetProperties()
                 where p.PropertyType.Equals(typeof(System.Drawing.Color))
                 let value = (System.Drawing.Color)p.GetValue(null, null)
                 where value.R == b.Color.R &&
                       value.G == b.Color.G &&
                       value.B == b.Color.B &&
                       value.A == b.Color.A
                 select p.Name).DefaultIfEmpty("unknown").First();

// colorname == "BlanchedAlmond"

または、自分でマッピングを作成し(そして、を介して色を調べますDictionary)、おそらく周りの多くのカラーテーブルの1つを使用します。

編集:

を使用しているというコメントを書きましたがSystem.Windows.Media.Color、それでもSystem.Drawing.Color色の名前を検索するために使用できます。

var b = System.Windows.Media.Color.FromArgb(255, 255, 235, 205);
var colorname = (from p in typeof(System.Drawing.Color).GetProperties()
                 where p.PropertyType.Equals(typeof(System.Drawing.Color))
                 let value = (System.Drawing.Color)p.GetValue(null, null)
                 where value.R == b.R &&
                       value.G == b.G &&
                       value.B == b.B &&
                       value.A == b.A
                 select p.Name).DefaultIfEmpty("unknown").First();
于 2012-10-11T14:50:19.823 に答える
0

基本的には、すでに回答済みのものを投稿します。

string color = textBox1.Text;

// best, using Color's static method
Color red1 = Color.FromName(color);

// using a ColorConverter
TypeConverter tc1 = TypeDescriptor.GetConverter(typeof(Color)); // ..or..
TypeConverter tc2 = new ColorConverter();
Color red2 = (Color)tc.ConvertFromString(color);

// using Reflection on Color or Brush
Color red3 = (Color)typeof(Color).GetProperty(color).GetValue(null, null);

// in WPF you can use a BrushConverter
SolidColorBrush redBrush = (SolidColorBrush)new BrushConverter().ConvertFromString(color);

元の回答:C#で文字列をブラシ/ブラシの色名に変換する

于 2012-10-11T14:36:40.253 に答える
0

System.Drawing.Brushのオブジェクトがあり、色情報にアクセスできません。色を入力することもできませんでした。これを、色情報が利用可能なSolidBrushにキャストすることができます。Brush colorオブジェクトをSolidBrushにキャストしてから、この方法で色から名前を引き出すことができました。

((SolidBrush)color).Color.Name
于 2021-07-02T13:14:53.383 に答える