1-我有垂直线注释来显示今天的日期和矩形注释,同时滚动该行是因为他隐藏了它,但矩形却没有!
(我知道我必须使用RA.visible=false
,但我需要一个事件和一个条件)
2-我想修复图表的显示在今天开始显示的位置时的视图,因为我必须移动滚动条才能得到它。
这是注释的代码:
VerticalLineAnnotation LA = new VerticalLineAnnotation();
DateTime today = DateTime.Now;
ChartArea ca= GanttChart.ChartAreas[0];
LA.AxisX = ca.AxisX;
LA.AxisY = ca.AxisY;
LA.Y = DateTime.ParseExact(today.ToShortDateString(), "dd/MM/yyyy", null).ToOADate();
LA.X = LA.Y;
LA.LineWidth = 1;
LA.IsInfinitive = true;
LA.LineColor = Color.Red;
LA.ClipToChartArea = ca.Name;
RectangleAnnotation RA = new RectangleAnnotation();
RA.AxisX = ca.AxisX;
RA.IsSizeAlwaysRelative = false;
RA.ToolTip = "Aujourd'hui \nLe "+today.ToString("dd MMM yyyy");
RA.Width = 20 * 0.07;
RA.Height = 8 * 0.01;
RA.LineColor = Color.Red;
RA.BackColor = Color.Red;
RA.AxisY = ca.AxisY;
RA.Y = -RA.Height;
RA.X = LA.X - RA.Width / 2;
GanttChart.Annotations.Add(LA);
GanttChart.Annotations.Add(RA);
编辑,滚动时出现问题,矩形仍在移动并且没有消失,可能是我需要知道图表区域的宽度吗?
更新 我尝试了这段代码,但矩形不再可见!
private void GanttChart_AxisViewChanged(object sender, ViewEventArgs e)
{
Axis ay = GanttChart.ChartAreas[0].AxisY;
if (ay.Minimum == ay.ScaleView.Position)
{ RA.Visible = e.NewPosition == e.Axis.Minimum; }
else
{ RA.Visible = e.NewPosition == e.Axis.Minimum; }
}
答案 0 :(得分:1)
滚动和缩放的所有方面均由轴的ScaleView
元素处理。
要在滚动过程中或滚动之后调整图表,可以使用AxisViewChanging
和AxisViewChanged
事件。
要比较滚动状态和非滚动状态,您可以针对ScaleView.Position
或e.NewPosition
测试axis.Minimum
或e.Axis.Minimum
。
示例:
private void chart1_AxisViewChanged(object sender, ViewEventArgs e)
{
if (e.NewPosition == e.Axis.Minimum)
{ action1 } // unscrolled
else
{ action2 } // scrolled
}
根据您的情况,正文可以简化为:RA.Visible = e.NewPosition == e.Axis.Minimum;
注意:上面的示例未指定要观看的轴,即正在观察两个轴。例如,如果您只想观看 y轴,则应将其更改为:
private void chart1_AxisViewChanged(object sender, ViewEventArgs e)
{
Axis ay = chart1.ChartAreas[0].AxisY;
if (ay.Minimum == ay.ScaleView.Position)
{ action1 }
else
{ action2 }
}
在您的情况下(条形图类型逐渐滚动),您很可能只想观看 y轴。