小弟刚接触VC++不久,对它实感头疼。现需要画一个动态图。
现有两个R=100的外接圆,要以连接点为中心旋转。然后再给两个圆附上不通的颜色。要用什么函数来实现啊?
求VC高手指点并解析下该程序。谢谢!

解决方案 »

  1.   

    WM_TIMER消息,SetTimer,OnDraw/OnPaint函数中绘制图形。
    创建一个不同颜色的CBrush,然后CDC::SelectObject()载入,然后绘制圆
    CDC::Ellipse();
      

  2.   

    先搞一个CDC m_dcCompatible; //一个虚拟DC
    在这个CDC里画呀画.最后再在onpaint里更新.void CMAP::OnPaint()
    {
    CPaintDC dc(this); // device context for painting
    // TODO: 在此处添加消息处理程序代码
    // 不为绘图消息调用 CStatic::OnPaint()
    dc.BitBlt (0,0,600,800,&m_dcCompatible,0,0,SRCCOPY);
    }要注意要的是:
    如果不想闪:
    OnEraseBkgnd
    要重载后不要在屏上刷新.要人为Invalidate(); //显示的刷新..BOOL CMAP::OnEraseBkgnd(CDC* pDC)
    {
    // 这里直接返回,不需要告诉主框架,底图已擦好了.这样可以不闪.
    return true;
    //return CStatic::OnEraseBkgnd(pDC);
    }
    至如如何画这个CDC m_dcCompatible
    擦掉就是画一个大矩形.
    画圆就是先擦再画.CPen pen;
    CPen *poldpen;
    CBrush brush ;
    CBrush *poldbrush;
    m_dcCompatible.Ellipse(.......);就是这样的.
    最后要说明一点就是用过的笔或刷呀.用完要删除的!!!!
      

  3.   

    先运算出圆心的轨迹坐标,然后直接在OnTimer里面画圆就行了。