我有一个简单的折线图,我想通过在线周围画一个矩形来突出显示该图的某些部分(理想情况下是一个带透明度的填充矩形......)。我不知道MS图表控件是否可以这样做?
答案 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事件。如果可以绘画,那么就可以绘画任何东西。同样使用此功能可使图表“打印”和“导出”与您绘制的外观相同。当图表的位置在屏幕上更改时,对其进行痛苦的处理会很有趣,因此请始终在其中进行绘画。
假设您有一个交易图表,则需要划定一条线,确定您在何处获利,或划成正方形,以表明您的“目标”,只需将坐标从何处添加到您想要的位置随你去...
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