Здравствуйте,
Поставил в форме график синуса и так же пытаюсь показать разрешенную площадь значений.
Надо вывести на графике что-то похожее на серый прямоугольник (см. рис. 1) . Он не обязательно начинается с Y=0
Точки синуса приходят во время работы програмы одна за одной.
Пытался использовать StripLine - очень похоже на то, что мне надо (см. рис. 2, желтоватая и голубоватая зоны), но у меня не получается определить его начальное значение как точку, в которой две координаты не равны 0. Так же его продолжительность должна быть не бесконечной. (В отличие от рис. 2)
рис. 1
рис. 2
Ответ
Благодаря одному из участников английского Stackoverflow, вот он ответ (точнее, работающий код) :
void drawAllowedArea(Point startPoint, Point endPoint, PaintEventArgs e)
{
var l = (float)chart1.ChartAreas[0].AxisX.ValueToPixelPosition(startPoint.X);
var t = (float)chart1.ChartAreas[0].AxisY.ValueToPixelPosition(endPoint.Y);
var r = (float)chart1.ChartAreas[0].AxisX.ValueToPixelPosition(endPoint.X);
var b = (float)chart1.ChartAreas[0].AxisY.ValueToPixelPosition(startPoint.Y);
var rect = RectangleF.FromLTRB(l, t, r, b);
using (var br = new SolidBrush(Color.FromArgb(100, Color.Blue)))
{
e.Graphics.FillRectangle(br, rect.X, rect.Y, rect.Width, rect.Height);
}
e.Graphics.DrawRectangle(Pens.Red, rect.X, rect.Y, rect.Width, rect.Height);
}
//and use this function in chart1_Paint event:
void chart1_Paint(object sender, PaintEventArgs e)
{
drawAllowedArea(new Point(20, 50000), new Point(40, 100000), e);
}
Ссылка на мой вопрос: https://stackoverflow.com/questions/41263864/winforms-chart-draw-a-allowed-area-on-line-chart
Спасибо всем, кто думал как мне помочь! :)
Комментариев нет:
Отправить комментарий