这是小弟的一个ondraw函数,其中CGraphSeries和CGraph都是关于直方图的类,小弟是实现用直方图来动态显示数据,但是当有了中间的一段代码(程序中已标出)后程序不能正常运行。望各位指导指导。
      CGraphSeries* series1 = new CGraphSeries();
CGraphSeries* series2 = new CGraphSeries();
CGraphSeries* series3 = new CGraphSeries();
series1->SetLabel("量程为10立方米");
series2->SetLabel("量程为20立方米");
series3->SetLabel("量程为0到200摄食度");

         CHellhome002Doc* pDoc=GetDocument();//chsdata是一个folat的数组  用 于储存要动态显示的数据。
series1->SetData(0, (int)(pDoc->chsdata[0]/24));//从这里开始
series1->SetData(1, (int)(pDoc->chsdata[1]/24));
series1->SetData(2, (int)(pDoc->chsdata[2]/24));
series2->SetData(0, (int)(pDoc->chsdata[3]/9));
series2->SetData(1, (int)(pDoc->chsdata[4]/9));
series2->SetData(2, (int)(pDoc->chsdata[5]/9));
series3->SetData(0, (int)(pDoc->chsdata[6]/1.28));
series3->SetData(1, (int)(pDoc->chsdata[7]/1.28));
series3->SetData(2, (int)(pDoc->chsdata[8]/1.28));//到这里截止

fangGraph->AddSeries(series1);
fangGraph->AddSeries(series2);
fangGraph->AddSeries(series3); //set the colors of my bars
fangGraph->SetColor(0, FOREST_GREEN);
fangGraph->SetColor(1, SKY_BLUE);
fangGraph->SetColor(2, DUSK); //set up legend
if(graphComplete)
fangGraph->DrawGraph(pDC);
UpdateWindow();其中SetData函数是用于设置直方图的数值。

解决方案 »

  1.   

    比如说:series1->SetData(0, (int)(pDoc->chsdata[0]/24));
    这句语句就有问题,chsdata是float型数据,而运算符“/”是取整运算,这样pDoc->chsdata[0]/24就会得到0,前面加(int)也没用。
    你可以把chsdata放大以后再进行类似运算。
      

  2.   

    Coudn't see the underlying bugs.
    To autoegg(dandan) :
    ----------------------------->
    "series1->SetData(0, (int)(pDoc->chsdata[0]/24));
    这句语句就有问题,chsdata是float型数据,而运算符“/”是取整运算,这样pDoc->chsdata[0]/24就会得到0 ?"
    I don't agree !
      

  3.   

    to zhujianping_es(DavidRipple) :难道你觉得如果pDoc->chsdata[0]小于24,那么pDoc->chsdata[0]/24不会等于0吗?