Расширение линии тренда по обе стороны от диаграммы Дандаса - PullRequest
0 голосов
/ 26 июля 2011

Я надеюсь, что кто-нибудь может помочь. Я использую Dundas Charting для Reporting Services v2.2 внутри проекта Visual Studio 2005 Business Intelligence. То, что я пытаюсь сделать, это расширить точку в центре ряда, чтобы она охватила всю область диаграммы от одной стороны к другой.

Таким образом, вместо того, чтобы просто иметь маркер (даже если серия определена как линейный график) в центре серии, мне нужна линия, проходящая от одного конца графика к другому.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 03 августа 2011

Я нашел решение проблемы после долгих кований и поиска в Google.В итоге я указал 2 точки с каждой стороны графика, а затем провел линию между ними.Это делается в событии 'Post Paint' диаграммы, находящейся в разделе Advanced.

Я также добавил параметр в раздел параметров, который содержит постоянную оси Y для линии тренда.

См. Приведенный ниже код для решения:

// Parameter: chartObj     - represents the chart object 
// Parameter: sender       - the chart object that will be painted
// Parameter: e            - arguments that contain the graphics object
// Parameter: codeParams   - user defined code parameters

double stripValue = Double.Parse(codeParams["Std"].ToString()); 

PointF p1 = new PointF(); 
p1.X = (float)chartObj.ChartAreas["Default"].AxisX.Minimum; 
p1.X = (float)chartObj.ChartAreas["Default"].AxisX.ValueToPixelPosition(p1.X); 

p1.Y = (float)chartObj.ChartAreas["Default"].AxisY.ValueToPixelPosition(stripValue); 


PointF p2 = new PointF(); 
p2.X = (float)chartObj.ChartAreas["Default"].AxisX.Maximum; 
p2.X = (float)chartObj.ChartAreas["Default"].AxisX.ValueToPixelPosition(p2.X); 

p2.Y = (float)chartObj.ChartAreas["Default"].AxisY.ValueToPixelPosition(stripValue); 


e.ChartGraphics.Graphics.DrawLine(new Pen(Color.FromArgb(255, 0, 0, 0), 1), p1, p2);
...