您的位置:首页 > 其它

如何用owc(office web component)画图表

2008-01-03 18:36 489 查看
前段时间公司要用owc做图表,就研究了一下,发现这方面的资料很少,就贴个代码出来大家研究研究。

public partial class frmChartShow : Form
{
public frmChartShow()
{
InitializeComponent();
}
private void frmChartShow_Load(object sender, EventArgs e)
{
string[] X1 = { "0", "5", "10", "15", "20", "25", "30" };
string[] Y1 = { "1", "2.5", "3", "10", "15", "16", "17" };
string[] X2 = { "0", "5", "10", "15", "20", "25", "30" };
string[] Y2 ={ "1", "3", "2", "12", "14","16","18" };
string[] DKX1 = { "5","15","30"};
string[] DKY1 = { "2.5","10","17"};
string[] DKX2 = { "10", "15", "30" };
string[] DKY2 = { "2","12","18"};
this.picBoxChart.Image = System.Drawing.Image.FromFile(CreateLineChart(X1,Y1,X2,Y2,DKX1,DKY1,DKX2,DKY2));
}
/// <summary>
/// 生成曲线图;
/// </summary>
/// <param name="X1">标准曲线X坐标</param>
/// <param name="Y1">标准曲线Y坐标</param>
/// <param name="X2">实际曲线X坐标</param>
/// <param name="Y2">实际曲线Y坐标</param>
/// <param name="DKX1">标准曲线断链点X坐标</param>
/// <param name="DKY1">标准曲线断链点Y坐标</param>
/// <param name="DKX2">实际曲线断链点X坐标</param>
/// <param name="DKY2">实际曲线断链点Y坐标</param>
string CreateLineChart(string[] X1,string[] Y1,string[] X2,string[] Y2,string[] DKX1,string[] DKY1,string[] DKX2,string[] DKY2)
{
StringBuilder strBuild = new StringBuilder();
//两条曲线和断链点的XY轴坐标值;
string XAxis1 = "";
string YAxis1 = "";
string XAxis2 = "";
string YAxis2 = "";
string DKXAxis1 = "";
string DKYAxis1 = "";
string DKXAxis2 = "";
string DKYAxis2 = "";
//生成X1输入点坐标值;
if (X1 != null)
{
for (int i = 0; i < X1.Length; i++)
{
strBuild.Append(X1[i]);
strBuild.Append(' ');
}
XAxis1 = strBuild.ToString();
strBuild.Remove(0, strBuild.Length);
}
//生成Y1输入点坐标值;
if (Y1 != null)
{
for (int i = 0; i < Y1.Length; i++)
{
strBuild.Append(Y1[i]);
strBuild.Append(' ');
}
YAxis1 = strBuild.ToString();
strBuild.Remove(0, strBuild.Length);
}
//生成X2输入点坐标值;
if (X2 != null)
{
for (int i = 0; i < X2.Length; i++)
{
strBuild.Append(X2[i]);
strBuild.Append(' ');
}
XAxis2 = strBuild.ToString();
strBuild.Remove(0, strBuild.Length);
}
//生成Y2输入点的坐标值;
if (Y2 != null)
{
for (int i = 0; i < Y2.Length; i++)
{
strBuild.Append(Y2[i]);
strBuild.Append(' ');
}
YAxis2 = strBuild.ToString();
strBuild.Remove(0,strBuild.Length);
}
//生成DKX1坐标值;
if (DKX1 != null)
{
for (int i = 0; i < DKX1.Length; i++)
{
strBuild.Append(DKX1[i]);
strBuild.Append(' ');
}
DKXAxis1 = strBuild.ToString();
strBuild.Remove(0, strBuild.Length);
}
//生成DKY1坐标值;
if (DKY1 != null)
{
for (int i = 0; i < DKY1.Length; i++)
{
strBuild.Append(DKY1[i]);
strBuild.Append(' ');
}
DKYAxis1 = strBuild.ToString();
strBuild.Remove(0, strBuild.Length);
}
//生成DKX2坐标值;
if (DKX2 != null)
{
for (int i = 0; i < DKX2.Length; i++)
{
strBuild.Append(DKX2[i]);
strBuild.Append(' ');
}
DKXAxis2 = strBuild.ToString();
strBuild.Remove(0, strBuild.Length);
}
//生成DKY2坐标值;
if (DKY2 != null)
{
for (int i = 0; i < DKY2.Length; i++)
{
strBuild.Append(DKY2[i]);
strBuild.Append(' ');
}
DKYAxis2 = strBuild.ToString();
strBuild.Remove(0, strBuild.Length);
}
//清除strBuild;
strBuild = null;
//创建ChartSpace来放置图表;
ChartSpace Space = new ChartSpace();
//在ChartSpace对象中添加新的图表对象;
ChChart Chart = Space.Charts.Add(0);
//指定图表类型为线性图;
Chart.Type = ChartChartTypeEnum.chChartTypeScatterSmoothLine;
//图表是否需要图例;
Chart.HasLegend = true;
//设置图例位置;
Chart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom;
//设置图例字体大小;
Chart.Legend.Font.Size = 11;
//给定标题;
Chart.HasTitle = true;
Chart.Title.Caption = "轨道右线轨迹比较图";
//给X,Y轴的图示说明;
Chart.Axes[0].HasTitle = true;
Chart.Axes[0].Title.Caption = "Y";
Chart.Axes[1].HasTitle = true;
Chart.Axes[1].Title.Caption = "X";
//添加一个Series(标准曲线);
Chart.SeriesCollection.Add(0);
//给Series取名字;
Chart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "标准");
//给X轴传值;
Chart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimXValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, XAxis1);
//给Y轴传值;
Chart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimYValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, YAxis1);
//给图示加标注;
//Chart.SeriesCollection[0].DataLabelsCollection.Add();
//给图示加坐标值;
//Chart.SeriesCollection[0].DataLabelsCollection[0].HasValue = true;
//给图示加名称;
//Chart.SeriesCollection[0].DataLabelsCollection[0].HasSeriesName = true;

//添加一个Series(实际曲线);
Chart.SeriesCollection.Add(1);
//给Series取名字;
Chart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "实际");
//给X轴传值;
Chart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimXValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, XAxis2);
//给Y轴传值;
Chart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimYValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, YAxis2);
//给图示加标注;
//Chart.SeriesCollection[1].DataLabelsCollection.Add();
//给图示加坐标值;
//Chart.SeriesCollection[1].DataLabelsCollection[0].HasValue = true;
//给图示加名称;
//Chart.SeriesCollection[1].DataLabelsCollection[0].HasSeriesName = true;
//添加一个Series(标准曲线的断链点);
Chart.SeriesCollection.Add(2);
//给Series取名字;
Chart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "标准断链点");
//重新给Series分类;
Chart.SeriesCollection[2].Type = ChartChartTypeEnum.chChartTypeScatterMarkers;
//给Series设置显示样式;
Chart.SeriesCollection[2].Marker.Style = ChartMarkerStyleEnum.chMarkerStyleCircle;
//设置显示的断链点大小;
Chart.SeriesCollection[2].Marker.Size = 7;
//给Series设置颜色;
Chart.SeriesCollection[2].Interior.Color = "Green";
//给Series添加标注;
Chart.SeriesCollection[2].DataLabelsCollection.Add();
Chart.SeriesCollection[2].DataLabelsCollection[0].HasValue = true;
//给X轴传值;
Chart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimXValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, DKXAxis1);
//给Y轴传值;
Chart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimYValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, DKYAxis1);
////添加一个Series(实际曲线的断链点);
ChSeries Dot = Chart.SeriesCollection.Add(3);
//给Series取名字;
Dot.SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "实际断链点");
//设置图示类型为点装图;
Dot.Type = ChartChartTypeEnum.chChartTypeScatterMarkers;
//显示为矩形;
Dot.Marker.Style = ChartMarkerStyleEnum.chMarkerStyleSquare;
//设置显示颜色为黄色;
Dot.Interior.Color = "Yellow";
//设置图形显示大小;
Dot.Marker.Size = 7;
//给行纵轴赋值;
Dot.SetData(ChartDimensionsEnum.chDimXValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, DKXAxis2);
Dot.SetData(ChartDimensionsEnum.chDimYValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, DKYAxis2);
//添加标注;
Dot.DataLabelsCollection.Add();
Dot.DataLabelsCollection[0].HasValue = true;
//输出成GIF文件
string strAbsolutePath = @". empChart.gif";
Space.ExportPicture(strAbsolutePath, "GIF", 400, 533);
//返回生成的曲线图路径字符串;
return strAbsolutePath;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: