将趋势线延伸到Dundas图表的任一侧

时间:2011-07-26 07:57:30

标签: charts reporting dundas

我希望有人可以提供帮助。 我在Visual Studio 2005商业智能项目中使用Dundas Charting for Reporting Services v2.2。 我想要做的是扩展系列中心的点,使其跨越整个图表区域从一侧到另一侧。

因此,在系列的中心不是只有一个标记(即使系列被定义为线图),我想要一条从图表的一端到另一端的线。

请帮忙。

1 个答案:

答案 0 :(得分:0)

经过多次修补和谷歌搜索后,我找到了问题的解决方案。我最终做的是在图表的两边指定2个点,然后在它们之间画一条线。这是在“高级”部分的图表的“Post Paint”事件中完成的。

我还在参数部分添加了一个参数,其中包含趋势线的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);