• 5106阅读
  • 3回复

qt画波形出现断线问题 [复制链接]

上一主题 下一主题
离线lzpmail
 
只看楼主 倒序阅读 楼主  发表于: 2011-07-07
hi, 小弟写了个小程序, 其中有画波形的部分, 但画出来 的波形不是很平滑, 并且会出现断线, 不知是为何, 我现在把代码贴出来, 请大家帮帮忙, 看是什么原因
  1.     QPainter pCanvas(m_pCanvasPixmap);
  2.     QPen pen;
  3.     pen.setColor(m_colorGraphic);
  4.     pen.setWidth(1);
  5.     pCanvas.setPen(pen);
  6.     if(nStep > *m_pGraphicDataCount)        //如果缓冲区中没有这么多数据时
  7.         nStep = *m_pGraphicDataCount;
  8.     QPoint pointBegin, pointEnd;
  9.     QBrush brush(Qt::black);
  10.     memcpy(&m_DrawedGraphicData, m_pGraphicData, nStep*sizeof(unsigned short));
  11.     nowX = m_LastPosX * fXInterval;
  12.     beforeX = nowX;
  13.     tempX = nowX;
  14.     tempY = m_LastPosY;
  15.     //下面为波形刷新棒
  16.     pCanvas.fillRect(nowX, 0, (int)nStep*fXInterval+5, fHeight, brush);
  17.     while(i < nStep)
  18.     {
  19.         if (nowX > fWidth)
  20.         {
  21.             m_LastPosX = 0;
  22.             tempX = m_LastPosX;
  23.             nowX = (++m_LastPosX) * fXInterval;
  24.             pCanvas.fillRect(0, 0, (int)nStep*fXInterval+5, fHeight, brush);
  25.         }
  26.         m_LastPosY = fHeight/2.0 - CalculateVaule(m_DrawedGraphicData[i]);
  27.         if (m_LastPosY < 0)
  28.             m_LastPosY = 0;
  29.         else if (m_LastPosY > fHeight)
  30.             m_LastPosY = fHeight;
  31.         pCanvas.drawLine(tempX, tempY, nowX, m_LastPosY);
  32.         tempX = nowX;
  33.         tempY = m_LastPosY;
  34.         ++m_LastPosX;
  35.         nowX = m_LastPosX * fXInterval;
  36.         ++i;
  37.     }
  38.     update(beforeX, 0, (int)nStep*fXInterval+5, fHeight);


离线xinqingfly

只看该作者 1楼 发表于: 2011-07-07
pCanvas.setRenderHint(QPainter::Antialiasing);
菜鸟也是鸟
离线lzpmail
只看该作者 2楼 发表于: 2011-07-08
好的, 我试下, 谢了
离线lzpmail
只看该作者 3楼 发表于: 2011-07-08
谢谢了,改进了好多
快速回复
限100 字节
 
上一个 下一个