问题描述
我用c#调用owc画折线,我想判断某个点的值大于32700的话我就跳过这点,直接连下一个点,但是我画出来的图在跳过那点后就不画了,代码如下,请帮忙看看:while(sqlDisplay.Read()){for(intk=0;k<aList.Count;k++){stringcsTmp=aDisList[k].ToString();stringabc=sqlDisplay[aList[k].ToString().Trim()].ToString().Trim();if(Convert.ToInt32(abc)<32700){csTmp+=abc;//csTmp+=sqlDisplay[aList[k].ToString().Trim()].ToString().Trim();csTmp+="t";aDisList.RemoveAt(k);aDisList.Insert(k,csTmp);}else{csTmp+="ttt";aDisList.RemoveAt(k);aDisList.Insert(k,csTmp);}}strCategory+=sqlDisplay["hour"].ToString().Trim()+'t';cba=sqlDisplay[ee].ToString().Trim();if(Convert.ToInt32(sqlDisplay[ee].ToString().Trim())<32700)strValue+=cba+"t";else{strValue+="t";}}sqlDisplay.Close();//创建ChartSpace对象来放置图表ChChartSpaceobjCSpace=newChartSpaceClass();//在ChartSpace对象中添加图表,Add方法返回chart对象;ChChartobjChart=objCSpace.Charts.Add(0);//指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到objChart.Type=ChartChartTypeEnum.chChartTypeLine;//曲线objChart.ChartDepth=10;//objChart.Type=ChartChartTypeEnum.chChartTypeLineMarkers;//带节点的曲线//objChart.Type=ChartChartTypeEnum.chChartTypeSmoothLine;//光滑曲线//objChart.Type=ChartChartTypeEnum.chChartTypeColumnClustered;//条形//标题objChart.HasTitle=true;SqlDataReadersqlShowname=cmd3.ExecuteReader();while(sqlShowname.Read())eename=Convert.ToString(sqlShowname[0]).Trim();objChart.Title.Caption=IIiii+"站点"+yy+"年"+mm+"月"+dd+"日"+hh.ToString()+"时前后各12小时的"+eename+"及参考要素变化图";sqlShowname.Close();objChart.Title.Font.Bold=true;objChart.Title.Font.Color="blue";objChart.Title.Font.Size=16;objChart.Title.Font.Name="隶书";//指定图表是否需要图例//objChart.HasLegend=false;objChart.HasLegend=true;objChart.Legend.Font.Size=10;objChart.Legend.Position=ChartLegendPositionEnum.chLegendPositionTop;//Axes[0]为X轴,Y轴objChart.Axes[0].HasTickLabels=true;objChart.Axes[0].TickLabelSpacing=1;//每隔1个标一个数值//objChart.Axes[0].TickMarkSpacing=4;//每隔5个作一个标志objChart.Axes[0].HasTitle=true;objChart.Axes[0].Title.Caption="时间";objChart.Axes[0].Title.Font.Size=12;//objChart.Axes[0].Title.Font.Name="隶书";//objChart.Axes[1].HasTitle=true;//objChart.Axes[1].Title.Caption="温度";//objChart.Axes[1].Title.Font.Size=12;//objChart.Axes[1].Title.Font.Name="隶书";ArrayListcolorList=newArrayList();colorList.Add("gold");colorList.Add("green");colorList.Add("purple");colorList.Add("blue");colorList.Add("brown");for(intj=0;j<aDisList.Count;j++){//添加一个seriesobjChart.SeriesCollection.Add(j);stringxx="select[chinesename]fromTableInfowhere[columnname]='"+aList[j].ToString().Trim()+"'";SqlCommandxCmd=newSqlCommand(xx,conn);SqlDataReaderreaderx=xCmd.ExecuteReader();stringcsname="";if(readerx.Read()){csname=readerx[0].ToString().Trim();//给定series的名字}readerx.Close();objChart.SeriesCollection[j].SetData(ChartDimensionsEnum.chDimSeriesNames,(int)ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),csname);//给定分类objChart.SeriesCollection[j].SetData(ChartDimensionsEnum.chDimCategories,(int)ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory);//给定值objChart.SeriesCollection[j].SetData(ChartDimensionsEnum.chDimValues,(int)ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),aDisList[j].ToString().Trim());objChart.SeriesCollection[j].Line.Color=colorList[j%5].ToString().Trim();}//添加一个seriesintnCount=aDisList.Count;objChart.SeriesCollection.Add(nCount);stringxxx="select[chinesename]fromTableInfowhere[columnname]='"+ee+"'";SqlCommandxxCmd=newSqlCommand(xxx,conn);SqlDataReaderreaderxx=xxCmd.ExecuteReader();stringxcsname="";if(readerxx.Read()){xcsname=readerxx[0].ToString().Trim();}objChart.SeriesCollection[nCount].Interior.Color="gray";//改变第四条线的颜色为背景色//给定series的名字objChart.SeriesCollection[nCount].SetData(ChartDimensionsEnum.chDimSeriesNames,(int)ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),xcsname);readerxx.Close();//给定分类objChart.SeriesCollection[nCount].SetData(ChartDimensionsEnum.chDimCategories,(int)ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strCategory);//给定值objChart.SeriesCollection[nCount].SetData(ChartDimensionsEnum.chDimValues,(int)ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),strValue);//Microsoft.Office.Interop.Owc11.ChDataLabelsd3=objChart.SeriesCollection[3].DataLabelsCollection.Add();//显示每个点的值//d3.HasValue=true;objChart.SeriesCollection[nCount].Line.Color="red";//Cht.SeriesCollection(4).Line.Color="blue"conn.Close();
解决方案
解决方案二:
把一个折线分成两条线这样就ok了
解决方案三:
很简单用图表组件wsChart4.5(DLL版)可以做到
解决方案四:
可是我有多条曲线,并且曲线的条数也是动态的,只是其中的某些曲线可能会有一些要排除的点,怎么办呢?能否给说详细点呢,谢谢了
解决方案五:
有朋友提到“把一个折线分成两条线”,请问具体怎么实现?而且有时候一条曲线上可能会有多个大于37200的值(断点值),如果一遇到断点值就分折线的话,又改怎么弄呢?谢谢!
解决方案六:
请问,有没有朋友知道用owc控件画的一条曲线上某部分曲线(当值大于32700部分)用背景色显示怎么实现?感激万分!!!
解决方案七:
相关资料: