在用這個控制元件的時候選擇PlotY函式時,采的時間點倒是可以一個點一個點的顯示,但是橫坐標不動,將函式換為ChartY函式時,橫坐標可以更新,比如我設定最大值到150,當曲線走到150的時候會從頭開始繼續顯示,此時橫坐標顯示150到300,但是同時顯示好幾個點,組成好幾段直線,而且顯示的越來越多,卻大神指導如何用ChartY函式一個一個點顯示
int m_CurPos=0;
int count=0;
BOOL m_bXuanhuan=FALSE;
float TempData=https://bbs.csdn.net/topics/20;
#define CURVEPOINT 100
float data[100][CURVEPOINT];
void CGraphIOView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
for (int i=0;i<100;i++)
{
for (int j=0;j<100;j++)
{
m_fEngData[i]=0.0;
}
}
// ReadData();
SetTimer(1,200,NULL);
void CGraphIOView::ShowCurve()
{
int i=0;//i的值就是顯示引數曲線編號
CNiReal64Vector vect1(CURVEPOINT);
// for (int i=0;i<100;i++)
{
data[i][m_CurPos]=m_fEngData[i];
}
// data[0][m_CurPos]=m_fEngData[0];
if (m_bXuanhuan)
{
int k=0;
for (int i=m_CurPos;i<CURVEPOINT;i++,k++)
{
vect1[k]=data[0][i];
}
for (i=0;i<m_CurPos&&k<CURVEPOINT;i++,k++)
{
vect1[k]=data[0][i];
}
}
else
{
vect1.SetSize(m_CurPos+1);
for (int i=0;i<m_CurPos+1;i++)
{
vect1[i]=data[0][i];
}
}
m_Graph.GetPlots().Item(1).ChartY(vect1,1);
m_CurPos++;
if (m_CurPos>CURVEPOINT)
{
m_bXuanhuan=TRUE;
m_CurPos=0;
}
}
void CGraphIOView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
// if (count<100)
{
// GenericData(count);
}
GenericData();//產生一個亂數
ShowCurve();//生成曲線
CFormView::OnTimer(nIDEvent);
}
void CGraphIOView::GenericData()
{
int i=0;
// for (i=0;i<100;i++)
{
m_fEngData[i]=rand()/1000+10;
}
}
}
uj5u.com熱心網友回復:
自繪是早晚要學會的技能。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/108137.html
下一篇:沒有搞過這種問題,求指教
