VARCHART XGantt_v5.1用户手册:如何创建直方图(.NET版)下
VARCHART XGantt,用于工业4.0项目管理、交互式的甘特图绝佳解决方案,世界级甘特图大师。它是一个交互式的甘特图控件,其模块化的设计让您可以创建满足您和您的客户所需求的应用程序。(我们领先的甘特图控件VARCHART XGantt可用于.NET,ActiveX和ASP.NET应用程序。)
在本教程中,我们将演示如何编写直方图,是VARCHART XGantt .NET版本的教程,主要分为8个步骤来描述,本篇文章是该教程的下半部分内容(上部分内容查看),内容紧接上文从第七个步骤开始,跟着小编来看看吧~
步骤7:在此步骤中,将为直方图创建四条曲线:容量曲线、未标记活动的曲线、标记活动的曲线和填充区域的辅助曲线。单击属性页布局上的管理直方图...以调用相应的对话框。
甘特图中可能同时存在多个直方图。每个直方图都有一个ist自己的数字刻度,并包含自己的曲线。
现在请定义数字刻度的起始值和结束值。单击End value列的Histogram_1字段,然后输入6。
现在,请编辑直方图。为此,请单击对话框顶部右侧的“编辑”按钮。
“曲线1”应代表容量曲线(红色)。 “曲线2”应表示未标记的节点,而“曲线3”应表示标记的节点。 “曲线4”是一条辅助曲线,用于提供不足区域的绿色背景。一条曲线已经存在。请创建另外三条曲线并根据插图定义其属性。
对于曲线,最多可以指定两条参考曲线。曲线形成具有ist参考曲线的区域,可以为其分配颜色和图案(请参见下面的草图)。在第一条参考曲线中,在曲线上方和下方形成的所有零件都加到该区域(顶部草图)。第二个参考曲线,只有那些部分添加到曲线下方形成的区域,即Y值小于原始曲线的值(底部草图)。另外,由第二参考曲线形成的区域以更高的优先级显示。我们将在下面看到,直方图会产生什么后果。
容量曲线(曲线1)将从列表中接收其值,我们稍后将通过编程代码提供该列表。因此,请在字段Source中将其数据源设置为via API。因此,不需要为可以从中获取数据的节点添加额外的过滤器。
请将线型设置为粗红线。该曲线的值不应加到另一条曲线的值上;因此,字段堆栈参考保持为空。此外,容量曲线并非旨在形成具有另一条曲线的区域,因此两个填充参考及其填充图案保持为空。请单击对话框中的相应字段,按照说明创建曲线1。
“曲线2”表示未选择的节点,并由名为“未选择的节点”的层组成。不需要用于进一步选择的过滤器。请为曲线选择蓝线颜色。曲线值不会添加到另一条曲线的值,因此堆栈参考值保持为空。该曲线应该与X轴形成一个区域,因此请在“填充参考”字段中选择值Flatline。
该曲线由非选定节点组成,还应以特殊方式指示其超出容量曲线以标记生产系统的瓶颈。因此,一旦其Y值超过曲线1的值,下面的区域应画上阴影线。因此,请将“曲线1”设置为其第二条参考曲线,然后选择阴影填充图案。
“曲线3”应代表所选节点。因此,请将其命名为“Selected Nodes”的图层作为其数据源。不需要过滤器。请指定浅灰色线条颜色。由于所选节点应显示在未选择节点上方,因此必须将它们的值添加到非选定节点中。因此,请选择曲线2作为堆栈参考。相同的曲线也用作第一参考曲线,因为所选节点在视觉上应与未选择的节点不同。作为填充图案,请在黄色背景上选择灰色交叉影线图案。
形成的区域将在曲线2的上方和下方可见。此外,它应出现在容量曲线的上方;因此请将曲线1指定为第二条参考曲线,并用相同的颜色和图案填充该区域。如果选定的节点超过容量曲线,它们将以与容量曲线下方相同的颜色和模式出现(您可以通过在此处指定例如红色来区分容量曲线上方和下方的所选节点)。
通过“曲线4”,我们将定义一个区域,表示容量曲线和下面的节点桩之间的浅绿色背景。它表示生产系统的可用资源。它的底部被未选择的节点限制,因此请选择它们作为数据源。在顶部,该区域受容量曲线的限制,您可以将其设置为第一个参考曲线。
问题:为什么曲线4的区域不会隐藏所选节点?答案:因为此对话框显示的曲线列表中存在优先级。底部列出的曲线的优先级低于顶部列出的曲线。这就是为什么曲线3的区域显示在曲线4的区域顶部的原因。您可以通过窗口顶部的右箭头修改优先级。
第8步:在最后一步中,我们将提供容量曲线的值。为此,请修改Load事件中的代码,如下所示:
示例代码VB.NET
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load VcGantt1.Width = ClientSize.Width - VcGantt1.Left VcGantt1.Height = ClientSize.Height - VcGantt1.Top VcGantt1.InsertNodeRecord("1;Node 1;07.05.2007;;5") VcGantt1.InsertNodeRecord("2;Node 2;09.05.2007;;5") VcGantt1.InsertNodeRecord("3;Node 3;10.05.2007;;6") VcGantt1.InsertNodeRecord("4;Node 4;17.05.2007;;10") VcGantt1.InsertNodeRecord("5;Node 5;22.05.2007;;3") VcGantt1.InsertNodeRecord("6;Node 6;23.05.2007;;1") VcGantt1.EndLoading() VcGantt1.OptimizeTimeScaleStartEnd(3) 'calculate end date Dim node As VcNode For Each node In VcGantt1.NodeCollection setNodeEndDate(node) Next Dim histogram As VcHistogram Dim curve As VcCurve histogram = VcGantt1.HistogramCollection.FirstHistogram curve = histogram.CurveCollection.CurveByName(" Curve1 ") curve.PointsEquidistant = False curve.SetValues("01.05.2007", "2") curve.SetValues("05.05.2007", "0") curve.SetValues("07.05.2007", "2") curve.SetValues("12.05.2007", "0") curve.SetValues("14.05.2007", "4") curve.SetValues("19.05.2007", "0") curve.SetValues("21.05.2007", "2") curve.SetValues("26.05.2007", "0") curve.SetValues("28.05.2007", "2") End Sub
示例代码C#
private void Form1_Load(object sender, System.EventArgs e) { vcGantt1.Width = ClientSize.Width - vcGantt1.Left; vcGantt1.Height = ClientSize.Height - vcGantt1.Top; vcGantt1.InsertNodeRecord("1;Node 1;07.05.2007;;5"); vcGantt1.InsertNodeRecord("2;Node 2;09.05.2007;;5"); vcGantt1.InsertNodeRecord("3;Node 3;10.05.2007;;6"); vcGantt1.InsertNodeRecord("4;Node 4;17.05.2007;;10"); vcGantt1.InsertNodeRecord("5;Node 5;22.05.2007;;3"); vcGantt1.InsertNodeRecord("6;Node 6;23.05.2007;;1"); vcGantt1.EndLoading(); vcGantt1.OptimizeTimeScaleStartEnd(3); // calculate end date foreach (VcNode node in vcGantt1.NodeCollection) { SetNodeEndDate(node); } VcHistogram histogram = vcGantt1.HistogramCollection.FirstHistogram(); VcCurve curve = histogram.CurveCollection.CurveByName("Curve 1"); curve.PointsEquidistant = false; curve.SetValues(Convert.ToDateTime("01.05.2007"),"2"); curve.SetValues(Convert.ToDateTime("05.05.2007"),"0"); curve.SetValues(Convert.ToDateTime("07.05.2007"),"2"); curve.SetValues(Convert.ToDateTime("12.05.2007"),"0"); curve.SetValues(Convert.ToDateTime("14.05.2007"),"4"); curve.SetValues(Convert.ToDateTime("19.05.2007"),"0"); curve.SetValues(Convert.ToDateTime("21.05.2007"),"2"); curve.SetValues(Convert.ToDateTime("26.05.2007"),"0"); curve.SetValues(Convert.ToDateTime("28.05.2007"),"2"); }
现在,请运行该程序并标记一项活动。您可以通过直方图中黄色背景上的灰色阴影部分立即识别,活动在显示的大部分工作负荷中占据哪个部分。
如果移动活动,工作负载将发生变化,您可以识别由交互引起的容量过载和不足。
直方图中的日历网格
您可以将一个或多个日历网格分配给直方图,以便甘特图中的不同日历网格也可以在直方图中显示。
要将自己的日历网格分配给直方图,必须满足三个条件:
1、必须为直方图分配日历
2、必须打开日历网格
3、必须定义一个外观,以显示日历网格
已分配日历,日历网格已打开
相应的API调用是:
示例代码VB.NET
// assigning the calendar to the histogram (by the calendar name) histogram.calendarName = group.DataField(14) // switching the calendar grid on histogram.ShowCalendarGrids = True // setting the histogram visible histogram.Visible = True
作为直方图的日历网格,VARCHART XGantt在时间刻度的第一部分中采用第一个不可见的日历网格,如果没有其他的存在。这是在甘特图中以分组方式使用的相同日历网格:
因此,日历网格将在甘特图中显示与直方图中相同的外观。在下面的示例中,它是一个日历网格,显示每个组的不同模式(分组日历网格):
如果您将另一个日历网格设置为时间刻度部分,VARCHART XGantt将使用此日历网格作为其直方图:
通过使用第二个日历网格,您可以指定与甘特图中的日历网格相比的不同外观。在我们的例子中,它显示了不同的颜色:
本教程内容已完结,相关内容请点击下面的文章查看~
彩票走势图相关的文章:
VARCHART XGantt_v5.1用户手册:如何创建直方图(.NET版)上
VARCHART XGantt_v5.1用户手册:如何创建直方图(ActiveX版)(上)
VARCHART XGantt_v5.1用户手册:如何创建直方图(ActiveX版)(下)
VARCHART XGantt_v5.1用户手册:如何使用过滤器(.NET版)
VARCHART XGantt_v5.1用户手册:如何使用过滤器(ActiveX版)
想要购买VARCHART XGantt正版授权,或了解更多产品信息请点击
扫描关注慧聚IT微信公众号,及时获取最新动态及最新资讯