📄 subject_63248.htm
字号:
<p>
序号:63248 发表者:小羽 发表日期:2003-12-02 15:38:03
<br>主题:使用overlay的页面的时候如何进行裁减?
<br>内容:int InitDDrawA(int nSrcWidth, int nSrcHeight, int nDstWidth,int nDstHeight)<BR>{ <BR> DDSURFACEDESC ddsd; <BR> int ret;<BR><BR><BR> if ( DirectDrawCreate( NULL, &lpDD, NULL ) != DD_OK ) <BR> {<BR> MessageBox(GetActiveWindow(),"error","can not create DDraw",MB_OK);<BR> <BR> return -1;<BR> }<BR><BR><BR> if ( lpDD->SetCooperativeLevel( NULL,DDSCL_NORMAL ) != DD_OK)<BR> return -1;<BR><BR><BR> ZeroMemory(&ddsd,sizeof(ddsd));<BR> ddsd.dwSize = sizeof( ddsd );<BR> ddsd.dwFlags = DDSD_CAPS;<BR> ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE; <BR> ret=lpDD->CreateSurface( &ddsd, &lpDDSPrimary, NULL );<BR> if ( ret != DD_OK) <BR> {<BR> printf("can not create primary surface!");<BR> return -1;<BR> }<BR><BR><BR> DDPIXELFORMAT ddpfOverlay={ sizeof(ddpfOverlay), DDPF_FOURCC,<BR> MAKEFOURCC('U','Y','V','Y'), 16, 0, 0, 0};<BR><BR> ddsd.dwSize = sizeof(ddsd); <BR> ddsd.dwFlags = DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT;<BR> ddsd.dwHeight = nSrcHeight;<BR> ddsd.dwWidth = nSrcWidth;<BR> ddsd.ddpfPixelFormat = ddpfOverlay;<BR> ddsd.ddsCaps.dwCaps = DDSCAPS_OVERLAY|DDSCAPS_VIDEOMEMORY;<BR> ret = lpDD->CreateSurface( &ddsd, &lpDDSOverlay, NULL );<BR> if (ret!= DD_OK) <BR> {<BR> printf("error create overlay surface");<BR> return -1;<BR> }<BR> lpDD->CreateClipper(0, &lpClipper, NULL);//创建裁减器<BR> lpClipper->SetHWnd(0, GetActiveWindow());//裁减器与窗口句柄连接<BR> lpDDSPrimary->SetClipper(lpClipper);//裁减器与主页面连接。<BR><BR><BR> return 0;<BR>} <BR><BR>覆盖页面的裁减只有在覆盖硬件可以支持,并且目标关键色没有被激活的情况下才能使用。这个条件,我的硬件支持覆盖页面,程序里也没有涉及到关键色。可是运行结果发现裁减器并没有进行任何裁减,这是为什么呢?<BR><BR><BR>--------------------------------------------------------------------------------<BR> 程序2003-12-2 15:39:59
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -