Onaltılık renk değerinden SolidColorBrush oluşturma


129

#Ffaacc gibi Hex değerinden SolidColorBrush oluşturmak istiyorum. Bunu nasıl yapabilirim?

MSDN'de şunlara sahibim:

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

Bu yüzden yazdım (yöntemimin şu şekilde renk aldığını düşünerek #ffaacc):

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

Ama bu hata verdi

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

Ayrıca aşağıdaki gibi 3 hata: Cannot convert int to byte.

Peki o zaman MSDN örneği nasıl çalışır?


6
O kadar aptalca ki, varsayılan #FFFFFF biçimine izin vermiyorlar.
MrFox

1
Bunların hiçbiri UWP için işe yaramıyor
kayleeFrye_onDeck

Yanıtlar:


326

Bunun yerine şunu deneyin:

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

17

.NET kullanarak Onaltılık renk kodundan Renk nasıl elde edilir?

Bunun peşinde olduğunuzu düşünüyorum, umarım sorunuza cevap verir.

Kodunuzun çalışmasını sağlamak için Convert.ToInt yerine Convert.ToByte kullanın ...

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

15

Ben kullanıyorum:

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

Her seferinde dönüşümün acısıyla uğraşmak istemiyorsanız, sadece bir uzatma yöntemi oluşturun.

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

O zaman şu şekilde kullanın: BackColor = "#FFADD8E6".ToBrush()

Alternatif olarak, aynı şeyi yapmak için bir yöntem sağlayabilirseniz.

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

BackColor = BrushFromHex("#FFADD8E6");

0

vb.net sürümü

Me.Background = CType(New BrushConverter().ConvertFrom("#ffaacc"), SolidColorBrush)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.