我正在尝试绘制10个矩形,但是当我使用g.DrawRectangle()
时,它正在绘制一个十字形,如下所示:
我正在创建包含getRectangle()函数的Vertex对象,该函数返回该顶点的Rectangle
对象。
我希望创建这些对象并在pictureBox
上将它们显示为矩形。
这是我的代码
private System.Drawing.Graphics g;
private System.Drawing.Pen pen1 = new System.Drawing.Pen(Color.Blue, 2F);
public Form1()
{
InitializeComponent();
pictureBox.Dock = DockStyle.Fill;
pictureBox.BackColor = Color.White;
}
private void paintPictureBox(object sender, PaintEventArgs e)
{
// Draw the vertex on the screen
g = e.Graphics;
// Create new graph object
Graph newGraph = new Graph();
for (int i = 0; i <= 10; i++)
{
// Tried this code too, but it still shows the cross
//g.DrawRectangle(pen1, Rectangle(10,10,10,10);
g.DrawRectangle(pen1, newGraph.verteces[0,i].getRectangle());
}
}
顶点类的代码
class Vertex
{
public int locationX;
public int locationY;
public int height = 10;
public int width = 10;
// Empty overload constructor
public Vertex()
{
}
// Constructor for Vertex
public Vertex(int locX, int locY)
{
// Set the variables
this.locationX = locX;
this.locationY = locY;
}
public Rectangle getRectangle()
{
// Create a rectangle out of the vertex information
return new Rectangle(locationX, locationY, width, height);
}
}
图表类的代码
class Graph
{
//verteces;
public Vertex[,] verteces = new Vertex[10, 10];
public Graph()
{
// Generate the graph, create the vertexs
for (int i = 0; i <= 10; i++)
{
// Create 10 Vertexes with different coordinates
verteces[0, i] = new Vertex(0, i);
}
}
}
答案 0 :(得分:2)
在绘制循环中看起来像个异常
上次致电:
newGraph.verteces[0,i]
以OutOfRangeException
失败
你应该迭代到i <= 10
,而不是i < 10
答案 1 :(得分:2)
红十字表示已抛出异常,您没有看到它,因为它正在被处理。 Configure Visual Studio to break on exception throw抓住它。
答案 2 :(得分:1)
抛出异常。首先看看你的代码:
for (int i = 0; i <= 10; i++)
将生成IndexOutOfRangeException
,因为verteces
有10个项目,但它会从0到10循环(包含所以它将搜索11个元素)。这取决于您想要做什么,但您必须将周期更改为(从=
移除<=
):
for (int i = 0; i < 10; i++)
或将verteces
的大小增加到11。