【发布时间】:2014-09-15 10:31:35
【问题描述】:
我有一个折线图。我从数据库中读取一个值及其记录时间,并每秒将它们添加到折线图中。所以我的分数每秒都在增加。
问题是这样的。我在折线图中添加了折线和矩形注解。 Line annonation 保持与开始时相同的宽度,但矩形 annonation 的宽度会根据我添加的点数而变化。
像这样;
我只希望那个矩形标注有一个固定的宽度我该怎么做?
代码;
VerticalLineAnnotation VA;
RectangleAnnotation RA;
double xFactor = 0.03;
double yFactor = 0.02;
VA = new VerticalLineAnnotation();
VA.AxisX = chartMonitor.ChartAreas[0].AxisX;
VA.AllowMoving = true;
VA.IsInfinitive = true;
VA.ClipToChartArea = chartMonitor.ChartAreas[0].Name;
VA.Name = "myLine";
VA.LineColor = Color.Red;
VA.LineWidth = 2;
VA.X = 1;
RA = new RectangleAnnotation();
RA.AxisX = chartMonitor.ChartAreas[0].AxisX;
RA.IsSizeAlwaysRelative = false;
RA.Width = 10 * xFactor;
RA.Height = 30 * yFactor;
VA.Name = "myRect";
RA.LineColor = Color.Red;
RA.BackColor = Color.Red;
RA.AxisY = chartMonitor.ChartAreas[0].AxisY;
RA.Y = -RA.Height;
RA.X = VA.X - RA.Width / 2;
RA.Text = "M1";
RA.ForeColor = Color.White;
RA.Font = new System.Drawing.Font("Arial", 8f);
chartMonitor.Annotations.Add(VA);
chartMonitor.Annotations.Add(RA);
chartMonitor.AnnotationPositionChanged += new EventHandler(chartMonitor_AnnotationPositionChanged);
chartMonitor.AnnotationPositionChanging += new EventHandler<AnnotationPositionChangingEventArgs>(chartMonitor_AnnotationPositionChanging);
void chartMonitor_AnnotationPositionChanging(object sender, AnnotationPositionChangingEventArgs e)
{
if (sender == VA) RA.X = VA.X - RA.Width / 2;
}
void chartMonitor_AnnotationPositionChanged(object sender, EventArgs e)
{
VA.X = (int)(VA.X + 0.5);
RA.X = VA.X - RA.Width / 2;
}
【问题讨论】:
标签: c# winforms charts annotations linechart