对于学校我们试图在Windows窗体应用程序中绘制一辆汽车,它需要是OOP。我们在表单中有4个按钮,一个用于绘制圆形,一个用于绘制正方形,一个用于绘制整车,另一个用于乘坐汽车。我们制作了一个Car类,它制作了两个圆形和一个应该形成汽车形状的正方形。当我们在car类中实例化一个新的圆时,我们得到一个System.NullReferenceException错误。我们如何解决这个问题?按钮3是创建汽车类。这是我们的代码:
这是我们的表格:
namespace Maissan_Autootje_V1
{
public partial class Form1 : Form
{
Graphics g;
public Form1()
{
InitializeComponent();
g = this.CreateGraphics();
}
private void button1_Click(object sender, EventArgs e)
{
Refresh();
Square square = new Square(150, 200, 150, 100);
square.Draw(g);
}
private void button2_Click(object sender, EventArgs e)
{
Refresh();
Circle circle = new Circle(100, 250, 100, 100);
Circle circle2 = new Circle(280, 250, 100, 100);
circle.Draw(g);
circle2.Draw(g);
}
private void button3_Click(object sender, EventArgs e)
{
Auto auto = new Auto();
}
private void button4_Click(object sender, EventArgs e)
{
}
}
}
这是我们的圈子(广场与圈子类几乎相同):
namespace Maissan_Autootje_V1
{
public class Circle
{
public Pen myPen = new Pen(Color.Blue, 5);
int x;
int y;
int width;
int height;
public Circle(int x, int y, int width, int height)
{
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public void Draw(Graphics g)
{
g.DrawEllipse(myPen, x, y, width, height);
}
}
}
这应该是吸引汽车的班级:
namespace Maissan_Autootje_V1
{
class Auto : Form1
{
Graphics g;
public Auto()
{
Circle circle = new Circle(100, 250, 100, 100);
Circle circle2 = new Circle(280, 250, 100, 100);
Square square = new Square(150, 200, 150, 100);
circle.Draw(g);
circle2.Draw(g);
square.Draw(g);
}
}
}
提前致谢!
答案 0 :(得分:1)
您需要为Auto提供Graphics对象的实例。
Graphics g == null
所以..例如:
class Auto
{
public Auto(Graphics g)
{
Circle circle = new Circle(100, 250, 100, 100);
Circle circle2 = new Circle(280, 250, 100, 100);
Square square = new Square(150, 200, 150, 100);
circle.Draw(g);
circle2.Draw(g);
square.Draw(g);
}
}