16進数のカラー値からSolidColorBrushを作成する


129

#ffaaccなどの16進数値からSolidColorBrushを作成したい。これどうやってするの?

MSDNで、私は得ました:

SolidColorBrush mySolidColorBrush = new SolidColorBrush();
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, 255);

だから私は書いた(私のメソッドが色を受け取ると仮定して#ffaacc):

Color.FromRgb(
  Convert.ToInt32(color.Substring(1, 2), 16), 
  Convert.ToInt32(color.Substring(3, 2), 16), 
  Convert.ToInt32(color.Substring(5, 2), 16));

しかし、これはエラーを与えました

The best overloaded method match for 'System.Windows.Media.Color.FromRgb(byte, byte, byte)' has some invalid arguments

また、次の3つのエラー: Cannot convert int to byte.

しかし、MSDNの例はどのように機能しますか?


6
彼らがデフォルトの#FFFFFFフォーマットを許可しないほど愚かです。
MrFox

1
これらはUWPでは機能しません
kayleeFrye_onDeck

回答:


325

代わりにこれを試してください:

(SolidColorBrush)(new BrushConverter().ConvertFrom("#ffaacc"));

17

.NETを使用して16進数のカラーコードからColorを取得する方法

これはあなたが求めているものだと思います。それがあなたの質問に答えることを願っています。

コードを機能させるには、Convert.ToIntではなくConvert.ToByteを使用します...

string colour = "#ffaacc";

Color.FromRgb(
Convert.ToByte(colour.Substring(1,2),16),
Convert.ToByte(colour.Substring(3,2),16),
Convert.ToByte(colour.Substring(5,2),16));


9
using System.Windows.Media;

byte R = Convert.ToByte(color.Substring(1, 2), 16);
byte G = Convert.ToByte(color.Substring(3, 2), 16);
byte B = Convert.ToByte(color.Substring(5, 2), 16);
SolidColorBrush scb = new SolidColorBrush(Color.FromRgb(R, G, B));
//applying the brush to the background of the existing Button btn:
btn.Background = scb;

4

毎回変換の苦労に対処したくない場合は、拡張メソッドを作成するだけです。

public static class Extensions
{
    public static SolidColorBrush ToBrush(this string HexColorString)
    {
        return (SolidColorBrush)(new BrushConverter().ConvertFrom(HexColorString));
    }    
}

次に、このように使用します: BackColor = "#FFADD8E6".ToBrush()

あるいは、同じことを行うメソッドを提供できる場合。

public SolidColorBrush BrushFromHex(string hexColorString)
{
    return (SolidColorBrush)(new BrushConverter().ConvertFrom(hexColorString));
}

BackColor = BrushFromHex("#FFADD8E6");

0

vb.netバージョン

Me.Background = CType(New BrushConverter().ConvertFrom("#ffaacc"), SolidColorBrush)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.