回 帖 发 新 帖 刷新版面

主题:关于directdraw的blit回的+30

directdraw的Blt函数中参数dwFlag到底是什么啊
大哥大姐讲几个常用的好吗
谢了![em10][em10]
还有怎么把一个位图放进一个页面里呢?????????????????????

回复列表 (共1个回复)

沙发

GOOGLE是好帮手
IDirectDrawSurface4::Blt
该函数完成一次位块传送(a bit block transfer)操作。目前它还不支持带 z-缓冲区和 alpha 混合(参阅 alpha 通道)的位块传送操作。

HRESULT Blt(
  LPRECT lpDestRect,                    
  LPDIRECTDRAWSURFACE4 lpDDSrcSurface,  
  LPRECT lpSrcRect,                     
  DWORD dwFlags,                        
  LPDDBLTFX lpDDBltFx                   
);
 
参数
lpDestRect 
一个 RECT 结构的地址,定义了一个矩形区域的左上和右下点,作为目标页面上将被位块传送的区域。如果该参数是 NULL, 整个目标页面将被使用。 
lpDDSrcSurface 
一个 DirectDrawSurface 对象的 IDirectDrawSurface4 接口的地址,作为位块操作的源页面。 
lpSrcRect 
一个 RECT 结构的地址,定义了一个矩形区域的左上和右下点,作为源页面上将被位块传送的区域。如果该参数是 NULL,整个源页面将被使用。 
dwFlags 
A combination of flags that determine the valid members of the associated DDBLTFX structure, specify color key information, or that request special behavior from the method. The following flags are defined. 
Validation flags 
DDBLT_COLORFILL 
使用 DDBLTFX 结构的 dwFillColor 成员作为填充目标页面上的目标矩形区域的颜色。 
DDBLT_DDFX 
使用 DDBLTFX 结构的 dwDDFX 成员来指定该位块传送操作的所使用的效果。 
DDBLT_DDROPS 
使用 DDBLTFX 结构的 dwDDROP 成员来指定光栅操作模式(ROPS),这些 ROP 不属于Win32 API。 
DDBLT_DEPTHFILL 
使用 DDBLTFX 结构的 dwFillDepth 成员作为填充目标 z-缓冲区页面上的目标矩形区域的深度值。 
DDBLT_KEYDESTOVERRIDE 
使用 DDBLTFX 结构的 ddckDestColorkey 成员作为目标页面的关键色(color key)。 
DDBLT_KEYSRCOVERRIDE 
使用 DDBLTFX 结构的 ddckSrcColorkey 成员作为源页面的关键色(color key)。 
DDBLT_ROP 
使用 DDBLTFX 结构的 dwROP 成员作为该位块传送操作的 ROP 模式。这些 ROP 与 Win32 API 中的定义是一样的。 
DDBLT_ROTATIONANGLE 
使用 DDBLTFX 结构的 dwRotationAngle 成员作为页面的旋转角度(specified in 1/100th of a degree)。 
Color key flags 
DDBLT_KEYDEST 
使用目标页面的关键色(color key)。 
DDBLT_KEYSRC 
使用源页面的关键色(color key)。 
Behavior flags 
DDBLT_ASYNC 
以异步的方式执行该位块传送操作,按照接收命令的先进先出的原则。如果没有可用的空间用于先进先出操作,该调用失败。 
DDBLT_WAIT 
如果位块传送器正忙,延迟 DDERR_WASSTILLDRAWING 消息的发送,直到位块传送器准备好或发生其它错误时返回。 
Obsolete and unsupported flags 
All "DDBLT_ALPHA" flag values. 
Not currently implemented. 
All "DDBLT_ZBUFFER" flag values 
This method does not currently support z-aware blit operations. None of the flags beginning with "DDBLT_ZBUFFER" are supported in this release of DirectX 6.0. 
lpDDBltFx 
DDBLTFX 结构的地址。 
返回值
如果函数调用成功,返回 DD_OK。

如果函数调用失败,返回值可能是下列错误值之一:

DDERR_GENERIC  
DDERR_INVALIDCLIPLIST  
DDERR_INVALIDOBJECT  
DDERR_INVALIDPARAMS  
DDERR_INVALIDRECT  
DDERR_NOALPHAHW  
DDERR_NOBLTHW  
DDERR_NOCLIPLIST  
DDERR_NODDROPSHW  
DDERR_NOMIRRORHW  
DDERR_NORASTEROPHW  
DDERR_NOROTATIONHW  
DDERR_NOSTRETCHHW  
DDERR_NOZBUFFERHW  
DDERR_SURFACEBUSY  
DDERR_SURFACELOST  
DDERR_UNSUPPORTED  
DDERR_WASSTILLDRAWING 


备注
该函数可以是同步执行也可以是异步执行(缺省)的,既可以是从显存到显存、显存到系统主存,也可以是系统主存到显存,或系统主存到系统主存。位块传送操作既可以使用源关键色(source color keys)也可以使用目标关键色(destination color keys)。如果源矩形和目标矩形不是相同的大小,该操作还可以缩放(stretching)图象到合适的大小。

典型的,如果位块传送器正忙并且没有准备好, IDirectDrawSurface4::Blt 将立即返回一个错误。调用函数时指定 DDBLT_WAIT 标志可以完成一次同步的位块传送,该函数将一直等待直到位块传送器准备好或出现另一个错误时才返回。

注意 RECT 结构的 right 和 bottom 成员是排除边线的,因此, right 减 left 值恰等于矩形区域的宽度(width)值,而不是宽度值-1。

QuickInfo 
  Windows NT/2000: Requires Windows 2000.
  Windows 95/98: Requires Windows 95 or later. Available as a redistributable for Windows 95.
  Header: Declared in ddraw.h.
  Import Library: Use ddraw.lib.

我来回复

您尚未登录,请登录后再回复。点此登录或注册