我试图使用C#代码获得不同的蓝色色调。我设法得到不同的颜色,但不是蓝色。
如何修复此代码: -
public MainWindow()
{
InitializeComponent();
double decValue = 255;
var converter = new System.Windows.Media.BrushConverter();
for (int i = 0; i < 100; i++)
{
string hexValue = decValue.ToString();
var brush = (System.Windows.Media.Brush)converter.ConvertFromString("#" + hexValue.ToString());
TextBox txt = new TextBox();
txt.Width = 30;
txt.Width = 90;
txt.Background = brush;
decValue = decValue - 1;
lst.Items.Add(txt);
}
}
答案 0 :(得分:3)
#255
相当于#225555
。您需要将十进制值转换为十六进制值,而不是将其转换为字符串(255 = FF)并将"0000"
添加到字符串的开头,以使其成为有效的颜色代码。
要将十进制转换为十六进制,请使用重载的toString
函数,如下所示:
string hexValue = decValue.ToString("X");
“X”格式字符串表示十六进制,因此255.ToString("X")
将返回十六进制字符串“FF”。有关详细信息,请参阅msdn.microsoft.com/en-us/library/dwhawy9k.aspx
然后为您的画笔使用以下内容:
var brush = (System.Windows.Media.Brush)converter.ConvertFromString("#0000" + hexValue);
答案 1 :(得分:2)
我建议采用以下更直接的方法 - 没有字符串,十六进制代码和转换器:
for (int i = 0; i < 100; i++)
{
byte r = 0;
byte g = 0;
byte b = (byte)(255 - i);
var color = System.Windows.Media.Color.FromRgb(r, g, b);
var brush = new System.Windows.Media.SolidColorBrush(color);
// Use brush here...
}