我有一个属性,允许已知颜色的字符串名称发送到我的控件。该酒店只接受适当的已知的颜色名称,比如“红”或“蓝”以编程方式从Brush类获取画笔?
private KnownColor _UseColor = KnownColor.Red;
/// <summary>
/// Gets or sets the name of the colour
/// </summary>
public string ColorName
{
get
{
return this._UseColor.ToString();
}
set
{
if (Enum.IsDefined(typeof(KnownColor), value))
this._UseColour = (KnownColor)Enum.Parse(typeof(KnownColor), value);
}
}
我想要做的就是使用此_UseColour
枚举在这样的.NET选择从静态Brushes类的现有刷什么
Brush sysBrush = Brushes.FromKnownColor(this._UseColor);
e.Graphics.FillRectangle(sysBrush, 0, 0, 10, 10);
而不是创造。只要控制是这样画
using (SolidBrush brsh = new SolidBrush(Color.FromKnownColor(this._UseColor)))
e.Graphics.FillRectangle(brsh, 0, 0, 10, 10);
新刷有谁知道这是可能的或者我每次都必须创建一个新的画笔?
Brushes.FromKnownColor
不在Brushes
类
我喜欢谢谢:)是它通常比动态创建他们更好的缓存刷对象?那么我是不是必须让我的班级一次性处理掉已知的布什? – jcharlesworthuk 2013-02-28 11:23:54
你可以让它在你的类的析构函数中处理每个笔刷。 – 2013-02-28 11:24:57
_knownBrushes中可能不会有大量金额,但我仍然会选择对TryGetValue()的调用,而不是在getter中的双重查找。 – JRoughan 2013-02-28 11:27:05