各位大哥,我要在MFC下实现衣服位图沿着一个矩形框的移动,怎么实现?具体情况如下
  1:矩形框的颜色可选,线宽很明显,比如10;
  2:位图,我是通过ClassWizard加进去的,是一个还比较小的位图
  3:位图沿着矩形框移动,要把矩形框的线宽覆盖掉(位图的高度约线宽的3倍)
  4:可以用Timer来试一下,只要实现如上移动效果就行,即,变量控制和矩形中的拐弯就先不用考虑了
  5:使用加载----更新----来实现??我是基于单文档的,在哪个函数里面加载位图?什么地方更新??用什么函数更新?还请前辈们明 示,不胜感激啊!

解决方案 »

  1.   

    将位图加载到PICTURE控件中,在定时器中调用SETWINDOWPOS,或MOVEWINDOW实现控件的移动
      

  2.   

    1:在View中移动
    2:矩形框是是用RoundRect画出来的一个“轨迹”,形象一点就是用RoundRect画出一个“轨道”,用一个公交车位图,在上面移动
    3:在View总可以用Picture控件吗?
      

  3.   

    不用控件啊,直接将图片利用gdi函数绘制在矩形框上即可1. 设计一个函数int ShowBmpOnRect(CDC *pDC, CBitmap *pBitmap, int x, int y)// pDC 是View的CDC
    // pBitmap 加载了小位图
    // x和y是本次位图绘制位置,具体如何跟踪由自己决定,可以是位图的显示中心,也可以使左上角等等2. 每次绘制新的位图位置时,要擦除上次绘制的图像
    可以参考以下文章:Bitmap Basics - A GDI tutorial  http://www.codeproject.com/KB/graphics/gditutorial.aspx
      

  4.   

    SETWINDOWPOS实现起来比较简单,重绘也可以,麻烦些。
      

  5.   

    可以考虑内存贴图的方法.
    CBitmap bmp1;
    bmp1=LoadBitmap(IDB_PICTURE)//载入位图.
    CDC memDC;
    CClientDC dc(this);
    memDC.CreateCompatibleDC(NULL);
    CBitmap* pOLdBitmap = memDC.SelectObject(&bmp1);
    BITMAP bmpInfo;
    bmp1.GetBitmap(&bmpInfo)
    dc.BitBlt(0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,&memDC,0,0,SRCCOPY);//在这里自己可以调整贴屏的位置.改前面两个0;
    memDC.SelectObject(pOldBitmap);
    memDC.DeleteDC();
      

  6.   

    矩形框在视图类的OnDraw函数中画上去;在视图上创建一个CStatic控件来显示位图;视图类中定义成员变量表示CStatic控件的当前位置和移动方向;用SetTimer定时计算移动后的坐标和改变移动方向,用MoveWindow移动控件。
      

  7.   

    满天星:
    基于单文档的,怎么用CStatic控件?我知道在formView中可以用,在static控件上怎么加载一副位图啊??还请详述
      

  8.   

    在视图类中定义一个CStatic m_Static,在视图类的OnInitialUpdate函数中:
    CView::OnInitialUpdate();
    m_Static.Create(NULL, WS_CHILD|WS_VISIBLE|SS_BITMAP, CRect(10, 10, 100, 100), this);
    m_Static.SetBitmap(LoadBitmap(AfxGetInstanceHandle(), (LPCTSTR)IDB_BITMAP1));
    根据实际情况修改上面的参数。