Страницы

Поиск по вопросам

суббота, 15 июня 2019 г.

Winforms. Отобразить на графике разрешенные значения

Здравствуйте,
Поставил в форме график синуса и так же пытаюсь показать разрешенную площадь значений. Надо вывести на графике что-то похожее на серый прямоугольник (см. рис. 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
Спасибо всем, кто думал как мне помочь! :)

Комментариев нет:

Отправить комментарий