我在程序中需要反复地对一个位图进行操作,其实就是横向移动,然后显示到屏幕,就像动画一样。我打算对位图构造两个内存设备环境,用来保存和操作位图,现在的问题是:
1)我如何声明这两个内存设备环境?(我在类的声明中定义了这两个对象CDC mem1,mem2;程序编译、连接都没问题,但是却执行不了?我估计可能是我没有对这两个对象初始化...)
2)这是否就是双缓冲绘图?(我只是想让每次对位图重复的操作都保留下来,可我无法保留,我也不知道该怎么办?)很急!望关注!

解决方案 »

  1.   

    如果使用GDI++,下面这篇文章一定很适合你。
    “Double Buffering With GDI+”http://www.codeproject.com/vcpp/gdiplus/gdiplus.asp
      

  2.   

    GDI++是什么?小弟VC初学不久。
      

  3.   

    定义一个兼容pDC的,pDC指的你的窗口的OnDraw(pDC),
    选择位图到这个内存DC中,
    然后用pDC->BitBlt()将内存DC中的位图拷贝到pDC中就行具体看CreateCompatibleDC()的帮助,有现成的例子可以直接运行
      

  4.   

    上面第一句话不清楚,就是用CreateCompatibleDC(pDC)创建一个内存DC
      

  5.   

    CDC memDC;memDC.CreateCompatibleDC(pDC);
    CBitmap bmp;CRect rect;
    GetClientRect(&rect);
    bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());CBitmap * pOldBitmap=memDC.SelectObject(&bmp);这样内存设备就构造成功
    用pDC->BitBlt把memDC内容复制过来就行。
      

  6.   

    我知道如何拷贝到内存,但我希望将位图能保存住,以便下次操作。
    而我现在在这个重复操作(循环)中定义一个兼容的pDC,结果每次循环都要重复定义,我的位图怎么办?我是想要某种东西能把我的位图保存!
      

  7.   

    在类里定义一个CBitmap的成员变量. m_bmp
    将楼上的楼上的程序种的bmp改成m_bmp