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?


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"));


15

Saya telah menggunakan:

new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ffaacc"));

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

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");

0

versi vb.net

Me.Background = CType(New BrushConverter().ConvertFrom("#ffaacc"), SolidColorBrush)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.