怎样擦除在透明单文档上的贴图?重点是这个窗体(包括客户区)、还有图片都是透明的,根本就没有背景,这样如果不擦除的话,下一张图片若盖不住上一张,会形成多个图片同时显示,所以怎样才能贴一张,擦一张,不会留下上一张的痕迹?

解决方案 »

  1.   

    请大家说的具体些好吗?这原理我懂一点,但就是不知道该怎样实现!这是我贴图的部分代码
    int index1=0;
    void CBabyView::OnTimer(UINT nIDEvent)
    {
    if(nIDEvent==0)
    {
    switch(index1%4)
    {
    case 0:
    m_bmp[1].DrawTransparent(pDC,0,0,RGB(0,0,0));
    break;
    case 1:
    m_bmp[2].DrawTransparent(pDC,0,0,RGB(0,0,0));
    break;
    case 2:
    m_bmp[3].DrawTransparent(pDC,0,0,RGB(0,0,0));
    break;
    };
    index1++;
    }
    CView::OnTimer(nIDEvent);

    }
    DrawTransparent是用来实现图片背景透明的一个贴图函数,最后一个参数是透明色。
    在窗体也是透明的前提下,请大家帮忙修改一下代码,来实现不断擦除旧图片!!
      

  2.   

    你的窗体是怎么透明的?
    layerwindow么?
    还有你DrawTransparent具体怎么写的?
      

  3.   

    用过SetLayeredWindowAttributes,不过在现实动画的时候特别卡,后来用的SetWindowPos,可是需要手动右击刷新两次才能实现透明,不知道该怎样改进一下?若有知道的希望指点一下,谢谢了!
    至于DrawTransparent,我是在网上找到的。
      

  4.   

    根据我的经验,通过layerwindow设置透明是和DC无关的,所以问题应该出在DrawTransparent这个函数上,也就是说你应该改一下这个函数的内核。如果这个函数不是基于GDI+的话,我觉得你要实现的这个效果还挺麻烦,至少你现在的思路不对。
      

  5.   

    谢谢xianglitian(向立天)的回答,不过我还是不太清楚该怎么办,加我QQ(769301095)好吗?希望能得到你的帮助!谢谢!