主题:关于directdraw的blit回的+30
笨笨雁
[专家分:120] 发布于 2006-03-19 19:42:00
directdraw的Blt函数中参数dwFlag到底是什么啊
大哥大姐讲几个常用的好吗
谢了![em10][em10]
还有怎么把一个位图放进一个页面里呢?????????????????????
回复列表 (共1个回复)
沙发
mroske [专家分:1340] 发布于 2006-03-22 15:12:00
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.
我来回复