将字符串转换为Brush对象

时间:2014-01-22 21:59:55

标签: c# brush

我目前有一些像这样的全局变量(全局部分并不真正相关):

public Brush backgroundColor;
public Brush textColor;
public double timeOffset;
public double dateOffset;
public string title;
public bool showTitle;
public bool showText;

我声明一个新的List<string>来存储所述变量:

List<string> x = new List<string>();
x.Add(backgroundColor);
x.Add(textColor);
x.Add(timeOffset.ToString());
x.Add(dateOffset.ToString());
x.Add(title);
x.Add(showTitle.ToString());
x.Add(showText.ToString());

值得注意的是,我只是暂时将这些字符串存储到我的列表中。我将在稍后使用它们作为对象。如果我想将此列表中的strings转换为booldouble等类型,我可以只使用Convert.ToDouble()Convert.ToBoolean(),但是,我无法找到任何可以为Brush对象执行此操作的内容。

我的Brush对象的使用方式如下:Brushes.BlackReference MSDN)。我看过这个thread,但他们输入的方式是RGB或Hexadecimal,这不是我需要的。

编辑:如果没有办法,或者你可以建议更好的方法来使用它,请告诉我。为什么我需要Brushes.XXXX是因为我正在将图像绘制到bitmap个对象上。

2 个答案:

答案 0 :(得分:3)

我建议创建一个类来保存所有这些信息:

public class MyDrawingInfo
{
    public Brush BackgroundColor;
    public Brush TextColor;
    public double TimeOffset;
    public double DateOffset;
    public string Title;
    public bool ShowTitle;
    public bool ShowText;
}

现在你可以使用这个信息实例化一个类,传递它,而不必在任何地方执行一些疯狂的转换。

编辑:要使用此类,首先将其实例化:

MyDrawingInfo mdi = new MyDrawingInfo();
mdi.BackgroundColor = Brushes.Black;
//etc

然后,在调用另一个方法时,传递您需要的属性:

ManualBackgroundColor(mdi.BackgroundColor)

注意:我更新了属性的名称和方法名称。 C#中的标准是使您的属性和方法名称为Pascal Case

答案 1 :(得分:1)

如果您需要列表中的属性,我建议您使用List<object>。由于.NET中的所有类都派生自object类,因此转换将比将字符串转换为对象要多得多。由于您使用的是对象列表,因此不再需要类来保存属性。此外,您可以使用对象初始值设定项来创建列表,而不是每次都调用Add()方法。列表的分配如下:

List<object> properties = new List<object>
{
    backgroundColor,
    textColor,
    timeOffset,
    dateOffset,
    title,
    showTitle,
    showText
};

现在您可以将此列表传递给您的方法,如下所示:

YourListExpectingMethod(properties);

在该方法中,您必须提供一些逻辑来确定转换对象的类型!

更多阅读: