2012-03-25 66 views
2

我试图通过DataGridView中的行绘制线条。这个想法是完成甘特图。现在我可以绘制栏栏。但是当任务之前有另一个任务时,我需要画出连接它们的线。通过行在DataGridView中绘制线条

这就是我现在所在:enter image description here

我需要的是绘制连接器,例如,“利亚6”和“利亚7”在椭圆

enter image description here

+0

你是怎么解决绘制甘特红/蓝条?什么阻止您使用相同的方法绘制连接器? – digEmAll 2012-03-25 17:52:52

+0

@digEmAll。所有酒吧被绘制在一个独特的单元格中,覆盖OnCellPaint。红色意味着任务被延迟,黑色意味着准时。蓝条是任务,灰色是组,而第一行的黑色是所有项目的进步。问题是,当我想绘制一行一行,最后一行结束时,我只能绘制第一行的行,那就是我的绘图区域。 – Nane 2012-03-25 18:42:58

回答

0

老实说它看起来很棘手。请考虑使用CellPaining。但我认为实施你所需要的可能会很痛苦。

+0

我重写了OnCellPaint以绘制条形图。即使它看起来很多细胞,它也只是一个。问题是,当我想绘制一行一行,最后一行结束时,我只能绘制第一行的行,那就是我的绘图区域。 – Nane 2012-03-25 18:46:16

+0

什么阻止找到下一行的单元格位置并在那里绘制? – 2012-03-25 19:02:52

+0

嗯。可能我可以绘制DataGridView的图形对象而不是单元格。我今晚会试试,让你知道。谢谢Andriy – Nane 2012-03-25 19:18:20

1

尝试RowPostPaint事件,例如:

e.Graphics.FillRectangle(Brushes.Red, 20, e.RowBounds.Top + 6, 
         e.RowBounds.Width, CInt(e.RowBounds.Height/2)); 
+1

阿门。问题在于RowBounds只是一行。 – Nane 2012-03-25 18:48:29

+1

@Nane,你没有得到它,它为每一行渲染,所以如果你想绘制特定的行,所以你打电话if(e.RowIndex ==某事)e.Graphics ...否则就像我的代码没有条件 – 2012-03-25 20:09:16