以下结果导致NullReferenceException。它告诉我,“drawObjs.Add(drawObj);” - 你调用的对象是空的。我不明白为什么这不是一个实例?我怎么不能添加一个对象到我的清单在C#中?
名单:
List<drawObject> drawObjs;
它的添加到列表中的方法:
public void createDrawObj()
{
drawObject drawObj = new drawObject(100,100,100,100,10);
drawObjs.Add(drawObj);
}
和类本身:
class drawObject
{
float _posX;
float _posY;
float _sizeX;
float _sizeY;
float _cr;
public drawObject(float posX, float posY, float sizeX, float sizeY, float cr)
{
_posX = posX;
_posY = posY;
_sizeX = sizeX;
_sizeY = sizeY;
}
public GraphicsPath objPath()
{
GraphicsPath Path = new GraphicsPath();
Path.AddLine(_posX + _cr, _posY, _posX + _sizeX - (_cr * 2), _posY);
Path.AddArc(_posX + _sizeX - (_cr * 2), _posY, _cr * 2, _cr * 2, 270, 90);
Path.AddLine(_posX + _sizeX, _posY + _cr, _posX + _sizeX, _posY + _sizeY - (_cr * 2));
Path.AddArc(_posX + _sizeX - (_cr * 2), _posY + _sizeY - (_cr * 2), _cr * 2, _cr * 2, 0, 90);
Path.AddLine(_posX + _sizeX - (_cr * 2), _posY + _sizeY, _posX + _cr, _posY + _sizeY);
Path.AddArc(_posX, _posY + _sizeY - (_cr * 2), _cr * 2, _cr * 2, 90, 90);
Path.AddLine(_posX, _posY + _sizeY - (_cr * 2), _posX, _posY + _cr);
Path.AddArc(_posX, _posY, _cr * 2, _cr * 2, 180, 90);
Path.CloseFigure();
return Path;
}
public LinearGradientBrush objBrush(int objColor)
{
LinearGradientBrush lgb;
if (objColor == 1)
{
lgb = new LinearGradientBrush(new PointF(_posX + (_sizeX/2), _posY), new PointF(_posX + (_sizeX/2), _posY + _sizeY), Color.RosyBrown, Color.Red);
}
else
{
lgb = new LinearGradientBrush(new PointF(_posX + (_sizeX/2), _posY), new PointF(_posX + (_sizeX/2), _posY + _sizeY), Color.GreenYellow, Color.Green);
}
return lgb;
}
}
现在我只觉得自己很蠢;) - 不知道我怎么会因此而忽略了:) – Bildsoe 2010-12-03 12:32:45