下圖是我在MFC界面上放置了一個High-Speed charting畫圖控制元件,用來動態顯示串口上傳的資料,1秒鐘更新5個點,這個畫圖控制元件一次可以顯示500個點,現在橫坐標設定的是自動顯示,當資料更新時的效果是整個波形在向左移,而橫坐標是每隔100個點顯示一次坐標值,我希望達到的效果是能夠每隔一段時間(比如10秒)顯示一下橫坐標的坐標值,在資料更新的程序中橫坐標在10秒、20秒、30秒......的地方才顯示,而且顯示的也是10、20、30,或者直接顯示當前時間,精確到秒,請問這個怎么實作呢?
uj5u.com熱心網友回復:
這個據我所知,如果只是用這個控制元件里的自帶函式的話,似乎達不到你說的目的。可能需要改High speed charting原始碼,如果你說的功能是不需要滾動條之類的功能,建議還是自己寫一個,模板參考雞啄米教程中的cpen畫線。
uj5u.com熱心網友回復:
樓主可以來份原始碼嗎?我用vc++添加這個控制元件一直失敗。跪求,郵箱[email protected]
uj5u.com熱心網友回復:
參考這個 https://blog.csdn.net/czyt1988/article/details/8740500uj5u.com熱心網友回復:
可以考慮更改 源代碼ChartAxis.cpp中的DrawTick函式中的內容。if (m_bIsHorizontal)
{
if (TickPos<m_StartPos || TickPos>m_EndPos)
bTickOnAxis = false;
if (!m_bIsSecondary)
{
if (bTickOnAxis)
{
pDC->MoveTo(TickPos,m_AxisRect.top+1);
pDC->LineTo(TickPos,m_AxisRect.top+4);
}
if (bLabelOnAxis)
{
//我自己更改的內容,可供參考
TChartString tmp = _T("");
int allsize = m_pXAxisName.size();
if (dTickVal < allsize)
{
tmp = m_pXAxisName[dTickVal];
//m_pindex++;
pDC->ExtTextOut(lLabelPos-TextSize.cx/2-15,m_AxisRect.top+5,
ETO_CLIPPED|ETO_OPAQUE,NULL,tmp.c_str(),NULL);
}
}
}
else
{
if (bTickOnAxis)
{
pDC->MoveTo(TickPos,m_AxisRect.bottom-1);
pDC->LineTo(TickPos,m_AxisRect.bottom-4);
}
if (bLabelOnAxis)
{
pDC->ExtTextOut(lLabelPos-TextSize.cx/2,m_AxisRect.bottom-5-TextSize.cy,
ETO_CLIPPED|ETO_OPAQUE,NULL,strBuffer.c_str(),NULL);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/8944.html
標籤:界面
上一篇:重號問題解決方案
