我有這樣的RGB顏色#dc020d
我有一個文本塊,我想使文本塊的前景等於我作爲一個字符串的RGB顏色。改變文本塊前景
我試圖
var bc = new BrushConverter();
tb.Foreground = (Brush)bc.ConvertFrom("#FFXXXXXX");
,但它沒有工作,雖然我使用System.Windows.Media
。
我發現Color.FromArgb()
的唯一方法,但它需要四個字節,我無法將字符串轉換爲四個字節。
我有這樣的RGB顏色#dc020d
我有一個文本塊,我想使文本塊的前景等於我作爲一個字符串的RGB顏色。改變文本塊前景
我試圖
var bc = new BrushConverter();
tb.Foreground = (Brush)bc.ConvertFrom("#FFXXXXXX");
,但它沒有工作,雖然我使用System.Windows.Media
。
我發現Color.FromArgb()
的唯一方法,但它需要四個字節,我無法將字符串轉換爲四個字節。
創建一個採用十六進制顏色字符串並返回SolidColorBrush
的方法。
像:
public SolidColorBrush GetBrushFromHexColor(string hexColor)
{
return new SolidColorBrush(
Color.FromArgb(
Convert.ToByte(hexColor.Substring(1, 2), 16),
Convert.ToByte(hexColor.Substring(3, 2), 16),
Convert.ToByte(hexColor.Substring(5, 2), 16),
Convert.ToByte(hexColor.Substring(7, 2), 16)
)
);
}
而調用這個函數到您設定的顏色文本塊就行了。
MyTxt.Foreground = GetBrushFromHexColor("#ffdc020d");
您可以使用:
// the same with #94b301
Color myColor = Color.FromArgb(255, 0x94, 0xb3, 0x01);
中做到這一點,但我不希望我想這樣做手動 –
試試這個。
// Description : Extension methods for using applying solid color in WinRT XAML projects.
// Owner : Farhan Ghumra
// Contact : https://www.facebook.com/farhan.ghumra
// https://twitter.com/_F4RH4N_
// Example :
// MyRectagle.Fill = ColorExtensions.FromName("SkyBlue");
// MyTextBlock.Foreground = ColorExtensions.FromHex("#379988");
using Windows.UI;
using Windows.UI.Xaml.Media;
using System.Reflection;
namespace App1
{
public static class ColorExtensions
{
/// <summary>
/// It gives solid color brush from hexadecimal color code.
/// </summary>
/// <param name="HexColor">Color code in hexadecimal format (Example : #123456 or #12345678)</param>
/// <returns>New instance of SolidColorBrush accoiding to hexadecimal color.</returns>
public static SolidColorBrush FromHex(string HexColor)
{
byte A, R, G, B;
if (HexColor.Length == 7)
{
A = 255;
R = HexColor.Substring(1, 2).ToByte();
G = HexColor.Substring(3, 2).ToByte();
B = HexColor.Substring(5, 2).ToByte();
return new SolidColorBrush(Color.FromArgb(A, R, G, B));
}
else if (HexColor.Length == 9)
{
A = HexColor.Substring(1, 2).ToByte();
R = HexColor.Substring(3, 2).ToByte();
G = HexColor.Substring(5, 2).ToByte();
B = HexColor.Substring(7, 2).ToByte();
return new SolidColorBrush(Color.FromArgb(A, R, G, B));
}
else
{
return new SolidColorBrush(Colors.Transparent);
}
}
/// <summary>
/// It gives solid color brush from color name.
/// </summary>
/// <param name="name">Color name as string.</param>
/// <returns>New instance of SolidColorBrush according to color name.</returns>
public static SolidColorBrush FromName(string ColorName)
{
var ColorProperty = typeof(Colors).GetRuntimeProperty(ColorName);
if (ColorProperty != null)
return new SolidColorBrush((Color)ColorProperty.GetValue(null));
else
return new SolidColorBrush(Colors.Transparent);
}
/// <summary>
/// Converts hexadecimal color code channel (Alpha, Red, Blue, Green) to byte type.
/// </summary>
/// <param name="ColorCodePart">Hexadecimal color code channel (Alpha, Red, Blue, Green)</param>
/// <returns>byte value parsed from Hexadecimal color code channel</returns>
private static byte ToByte(this string ColorCodePart)
{
return byte.Parse(ColorCodePart, System.Globalization.NumberStyles.HexNumber);
}
}
}
使用http://www.yellowpipe.com/yis/tools/hex-to-rgb/color-converter.php – ray
看到樣品http://msdn.microsoft得到十六進制值的RBG .com/en-us/library/system.windows.media.color.fromargb(v = vs.110).aspx – ray
@ray我想在c# –