借鉴MSChart控件

时间:2013-05-07 02:43:33

标签: c# charts mschart rectangles

我有一个简单的折线图,我想通过在线周围画一个矩形来突出显示该图的某些部分(理想情况下是一个带透明度的填充矩形......)。我不知道MS图表控件是否可以这样做?

3 个答案:

答案 0 :(得分:3)

我建议您下载code samples from MS并查看注释部分。在那里,您将找到实现所述目标所需的所有文档:

private void AddRectangleAnnotation()
{
RectangleAnnotation annotation = new RectangleAnnotation();
annotation.AnchorDataPoint = Chart1.Series[0].Points[2];
annotation.Text = "I am a\nRectangleAnnotation";
annotation.ForeColor = Color.Black;
annotation.Font = new Font("Arial", 12);;
annotation.LineWidth = 2;
annotation.BackColor = Color.PaleYellow;
annotation.LineDashStyle = ChartDashStyle.Dash;

Chart1.Annotations.Add(annotation);
}

答案 1 :(得分:0)

你的意思是:

using (Graphics g = Graphics.FromImage(pictureBox1.Image))
{
    using(Brush brush = new SolidBrush(your_color))
    {
        g.FillRectangle(brush , x, y, width, height);
    }
}

或者您可以使用

Brush brush = new SolidBrush(Color.FromArgb(alpha, red, green, blue))

alpha 0 变为 255 ,因此alpha的值 128 会给出你 50% opactity。

答案 2 :(得分:0)

要在图表上绘制时,可以添加LineAnnotation或RectangleAnnotation。但是,如果您想要更多控制权,则可以使用图表的PrePaint和PostPaint事件。如果可以绘画,那么就可以绘画任何东西。同样使用此功能可使图表“打印”和“导出”与您绘制的外观相同。当图表的位置在屏幕上更改时,对其进行痛苦的处理会很有趣,因此请始终在其中进行绘画。

假设您有一个交易图表,则需要划定一条线,确定您在何处获利,或划成正方形,以表明您的“目标”,只需将坐标从何处添加到您想要的位置随你去...

enter image description here

MS Chart sample project显示了如何使用以下代码(也提供vb.net)执行此操作:

SELECT phone,
       Year(dte)                AS year,
       Month(dte)               AS month,
       Count(status = "failed") AS count_status
FROM   testdte
WHERE  dte BETWEEN Date(Now()) - INTERVAL(Day(Now())-1) day - INTERVAL 3 month
                   AND Now(
                   )
GROUP  BY Year(dte),
          Month(dte),
          phone
ORDER  BY Year(dte),
          Month(dte),
          phone