Membuat SolidColorBrush dari nilai warna hex

129

Saya ingin membuat SolidColorBrush dari nilai Hex seperti #ffaacc. Bagaimana saya bisa melakukan ini?

Di MSDN, saya mendapat:

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

Jadi saya menulis (mengingat metode saya menerima warna sebagai #ffaacc):

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

Tapi ini memberi kesalahan sebagai

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

Juga 3 kesalahan sebagai: Cannot convert int to byte.

Tapi bagaimana contoh MSDN bekerja?

Mahesha999
sumber
6
Sangat bodoh sehingga mereka tidak mengizinkan format #FFFFFF default.
MrFox
1
Tak satu pun dari ini bekerja untuk UWP
kayleeFrye_onDeck

Jawaban:

326

Coba ini sebagai gantinya:

(SolidColorBrush)(new BrushConverter().ConvertFrom("#ffaacc"));
Chris Ray
sumber
17

Bagaimana cara mendapatkan Warna dari kode warna Heksadesimal menggunakan .NET?

Saya pikir ini adalah apa yang Anda cari, semoga menjawab pertanyaan Anda.

Agar kode Anda berfungsi, gunakan Convert.ToByte daripada Convert.ToInt ...

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));
GJHix
sumber
15

Saya telah menggunakan:

new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ffaacc"));
Jon Vielhaber
sumber
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;
Mahesha999
sumber
4

Jika Anda tidak ingin berurusan dengan sakitnya konversi setiap kali cukup buat metode ekstensi.

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

Kemudian gunakan seperti ini: BackColor = "#FFADD8E6".ToBrush()

Bergantian jika Anda bisa memberikan metode untuk melakukan hal yang sama.

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

BackColor = BrushFromHex("#FFADD8E6");
Neil B
sumber
0

versi vb.net

Me.Background = CType(New BrushConverter().ConvertFrom("#ffaacc"), SolidColorBrush)
Dr. Seseorang
sumber