窗口模式的DirectDraw,使用一个主页面,一个裁剪器,一秒钟会显示很多次图像,
正常情况下图像没有被窗口遮挡时都很正常但是,比如在图像上弹出右键,或者拿一个窗口部分遮挡图像时,在弹出菜单的边缘处,图像会有断层的感觉,
菜单或窗口慢慢移动,图像的断层也会跟着移动。有哪位遇到过此类问题?

解决方案 »

  1.   

    不是刷新问题并且我在这里给BLT设置了
    DDBLTFX  ddbltfx;  
        
        ZeroMemory(&ddbltfx, sizeof(ddbltfx));
        ddbltfx.dwSize = sizeof(ddbltfx);
        ddbltfx.dwDDFX = DDBLTFX_MIRRORLEFTRIGHT;
    理论上来说图像会左右反过来显示,但是没起作用。
    表面上看没起作用,但是如果拿一个窗口去挡图像时,被挡部分的左右就翻转了,好像是遮挡的窗口右侧边缘开始往右,显示的是真实图像的左侧图像,窗口左侧边缘往左显示的是真实图像的右铡图像抓狂
      

  2.   

    注明:显示监控视频,一秒30帧,先lock,再将帧信息以YUV直接写入directdraw的离屏表面内存中,再unlock,然后裁剪器sethwnd(当前的窗口),再Blt没有窗口遮挡时,没有任何问题,窗口一遮挡,就是窗口的边缘部分的图像会有断裂层,很奇怪,并且感觉上整个图像比原来没有遮挡前的被挤压了一点(不太明显),感觉好像是当被遮挡时,图像画到的目标区域进行了重新计算,将真实图像进行一定的压缩。ret = m_lpMainSourceFaceObject->Blt(NULL, 
                m_lpSpliterOffScreenObject[0], // 支持多个离屏表面
                NULL, DDBLT_WAIT, NULL);
      

  3.   

    换句话说:
    DDBLTFX  ddbltfx;  
    ZeroMemory(&ddbltfx, sizeof(ddbltfx)); 
    ddbltfx.dwSize = sizeof(ddbltfx); 
    ddbltfx.dwDDFX = DDBLTFX_MIRRORLEFTRIGHT; 
    理论上来说图像会左右反过来显示,但是没起作用(但是遮挡后会乱)如果能保证DDBLTFX能够起作用,应该这个问题就表明已经解决了
      

  4.   

    我也遇到这个问题了。我怀疑是不是和显卡有关?因为PPStream在我电脑上面也存在同样的问题(XP系统,垃圾显卡),在另外一台好配置的机器上(WIN7系统)就没有这个问题。
      

  5.   

    我这边调试的结果是在由离屏表面blt到主表面的时候,如果有其他窗口遮挡住画面,则会出现LZ说的断层的现象。前提是这次blt的区域不一样,有拉伸过程,如果不存在拉伸则很正常。
    所以我在中间再建了一个临时的离屏表面,拉伸好再blt到主表面,这样就正常,但是CPU消耗会增加。不知道有没有其他办法。
      

  6.   

    是因为blt的区域不一样,有拉伸过程导致的断层现象?