在文本框

时间:2015-08-07 09:37:54

标签: c# css winforms

我试图使用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);
    }
}

2 个答案:

答案 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...
}