我想动态显示一条波形
这个CEdit控件可以每隔很短的时间得到即将要增量显示图形所需的部分数据
我很想一点一点的增量画出
而不是每次都要把以前所画的东西全部再来过
请问如何仅仅只对这一块我想画的部分画图呢?
而且可以避免在画的过程中窗口被拖动引起的onpaint使得已经画的都没了
请问怎么画效率会高呢
如果每次都是一有数据就全部重画
总会得屏幕在闪烁 很难看的
这个CEdit控件可以每隔很短的时间得到即将要增量显示图形所需的部分数据
我很想一点一点的增量画出
而不是每次都要把以前所画的东西全部再来过
请问如何仅仅只对这一块我想画的部分画图呢?
而且可以避免在画的过程中窗口被拖动引起的onpaint使得已经画的都没了
请问怎么画效率会高呢
如果每次都是一有数据就全部重画
总会得屏幕在闪烁 很难看的
CPaintDC dc(this); // device context for painting
dc.m_ps.rcPaint;
rcPaint中包含了dialog中需要更新的RECT,
如果窗体被覆盖了那么肯定要重画的。建议你在内存DC中画图,最后BitBlt到窗口DC上,而且只重画无效区域
CPoint point;
COLORREF XorColor = pDC->GetBkColor() ^ GetPenColor();
CPen pen(PS_DOT, 1, XorColor), *oldpen;
int oldmode = pDC->GetROP2();
oldpen = pDC->SelectObject(&pen);
pDC->SetROP2(R2_XORPEN);
//首先删除原矩形
pDC->MoveTo(m_x1,m_y1);
pDC->LineTo(m_x2,m_y1);
pDC->LineTo(m_x2,m_y2);
pDC->LineTo(m_x1,m_y2);
pDC->LineTo(m_x1,m_y1);
//修改新图形坐标
m_x1 += x-m_oldx, m_y1 += y-m_oldy;
m_x2 += x-m_oldx, m_y1 += y-m_oldy;
pDC->MoveTo(m_x1,m_y1);
pDC->LineTo(m_x2,m_y1);
pDC->LineTo(m_x2,m_y2);
pDC->LineTo(m_x1,m_y2);
pDC->LineTo(m_x1,m_y1);
//以下恢复DC
pDC->SetROP2(oldmode);
pDC->SelectObject(oldpen);
pen.DeleteObject();//释放笔资源