在一个View视图上逐个显示5万个点(一个航迹数据),显示速度可调整,1:60秒 到 1:3600秒不等
数据中每个点都有时间参数,速度越来越慢,怎么解决啊?
我目前做法:首先根据显示速度设置订时器,1:60秒时,SetTimer(1,1000,NULL);m_PointArray//存放所有点
//要求个别航迹段显示的线形还不一样,有的实线,有的虚线,所以用MoveTo,LineTo来画。
void CDrawTrack::OnDraw(CDC *pDC, int nCount)
{
CPoint tempPoint;
tempPoint = m_PointArray[0].point;
pDC->MoveTo(tempPoint);
for (int i = 1; i < nCount; i++)
{
tempPoint = m_PointArray[i].point;
if(m_PointArray[i].nLineStyle == 1)//该段线形--虚线
{
//此处设置画笔为虚线
}
pDC->LineTo(tempPoint);
}
}
void CDrawTrack::OnTimer(UINT nIDEvent)
{
if(nIDEvent == 1)
{
pView->Invalidate(FALSE);//pView当前窗口指针
}
}
int nCount = 0;//当前点的个数
void CTrackView::OnDraw(CDC* pDC)//View视图类
{
// 此处使用双缓存方式显示线
...
pDrawTrack->OnDraw(pDC, nCount++);
pDC->BitBlt(UpdateRect.left, UpdateRect.top, UpdateRect.Width(), UpdateRect.Height(),
m_pMemDC, UpdateRect.left, UpdateRect.top, SRCCOPY);
}开始几百个点速度还可以,上万个点速度就明显慢了,怎么能搞定这个问题啊??急急,谢谢..
数据中每个点都有时间参数,速度越来越慢,怎么解决啊?
我目前做法:首先根据显示速度设置订时器,1:60秒时,SetTimer(1,1000,NULL);m_PointArray//存放所有点
//要求个别航迹段显示的线形还不一样,有的实线,有的虚线,所以用MoveTo,LineTo来画。
void CDrawTrack::OnDraw(CDC *pDC, int nCount)
{
CPoint tempPoint;
tempPoint = m_PointArray[0].point;
pDC->MoveTo(tempPoint);
for (int i = 1; i < nCount; i++)
{
tempPoint = m_PointArray[i].point;
if(m_PointArray[i].nLineStyle == 1)//该段线形--虚线
{
//此处设置画笔为虚线
}
pDC->LineTo(tempPoint);
}
}
void CDrawTrack::OnTimer(UINT nIDEvent)
{
if(nIDEvent == 1)
{
pView->Invalidate(FALSE);//pView当前窗口指针
}
}
int nCount = 0;//当前点的个数
void CTrackView::OnDraw(CDC* pDC)//View视图类
{
// 此处使用双缓存方式显示线
...
pDrawTrack->OnDraw(pDC, nCount++);
pDC->BitBlt(UpdateRect.left, UpdateRect.top, UpdateRect.Width(), UpdateRect.Height(),
m_pMemDC, UpdateRect.left, UpdateRect.top, SRCCOPY);
}开始几百个点速度还可以,上万个点速度就明显慢了,怎么能搞定这个问题啊??急急,谢谢..
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货