私の色をint値でdbに保存しています。System.Drawing.Color convertArgbの問題
intをColorプロパティに変更すると、Colorプロパティの値が失われます。 "Red"を返しますが、プロパティは "ff000000"を返します。私は何をしていますか?
私はこの1つを得る必要がある - あなたは間違って何もしないいるプロパティ赤ではなく進値を
私の色をint値でdbに保存しています。System.Drawing.Color convertArgbの問題
intをColorプロパティに変更すると、Colorプロパティの値が失われます。 "Red"を返しますが、プロパティは "ff000000"を返します。私は何をしていますか?
私はこの1つを得る必要がある - あなたは間違って何もしないいるプロパティ赤ではなく進値を
はあなたが知られている色だけの色を混ぜ、この
System.Drawing.ColorTranslator.FromHtml("#" + "Hex value").Name
それは働いています...ありがとう) – user571874
。六角中
ff
System.Drawing.Color.Red.Name
string sRedColorName = System.Drawing.Color.Red.Name;
を使用し、あなたは色の名前を取得したい場合は
System.Drawing.Color.Red.ToArgb();
によって返されるRed
色、のために10進値です255に等しいです。
ok。私はどのようにプロパティ "赤"を得ることができますか? – user571874
@ user571874答えに記載されているように、 'System.Drawing.Color.Red.Name'を使用することができます – Shai
intをColorプロパティの失われたプロパティColorに変換すると、
はい、正しいです。これがColor.Name
プロパティの仕組みです。 the documentationによると:
このメソッドは、名前から色が作成された場合はユーザー定義の色名、または既知の色の名前を返します。カスタムカラーの場合、RGB値が返されます。
ですから、整数からColor
オブジェクトを作成しているので、(RGB)値-ないその名-Color
構造は、名前の色としてそれを認識しません。
この情報は、既知のすべての色とそのRGB値を含むマップを反復するのではなく、Color
オブジェクトが作成された時点でプライベートセンチネルフィールドに格納されているため、色情報をデータベースにシリアライズする際に、その情報を整数として失うことになります。
を試してみてください。既知の色をintに変換して色に戻すと、その名前は失われます。
int icolor = System.Drawing.Color.Red.ToArgb();
Color knownColor = System.Drawing.Color.FromArgb(icolor).ToKnownColor();
「FromArgb」によって返される可能性のある色は40億色あります。なぜ、このコードパスは、すべての可能性から実際に指定された色の1つを選択してからそれを特別に返すかどうか試してみると、遅くなるはずです。なぜあなたはそれが「レッド」になる必要がありますか? –
[ToArgb()に続けてFromArgb()を使用しても元の色にはならない](http://stackoverflow.com/questions/721324/using-toargb-followed-by-fromargb-does-not-result)オリジナルカラー) –