1.使用总结
- 1.首先,blitter是表面的方法:LPDIRECTDRAWSURFACE7::Blt()
- 2.其次,方法参数lpdds->Blt(destRect,srcSurface,srcRect,dwFlags,LPDDBLTFX描述信息).dwFlags不可以缺少DDBLT_WAIT
- 3.整个表面Blt的时候,destRect和srcRect都设置为NULL。
- 4.使用Blt颜色填充时,设置DDBLTFX.dwFillColor颜色索引或者RGB值,同时,dwFlags记得增加DDBLT_COLORFILL,否则填充颜色不起作用。
- 5.使用Blt,设置Rect的时候,会自动进行到目标Rect的缩放。
- 6.DDBLTFX结构中描述了Blt的功能参数。(颜色填充、旋转、ZBuffer等)
2.使用示例
将Source blt到 dest. 目标位置是x,y;目标的宽度和高度是width,height; transparent表示是否使用色键
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32/// 将Source blt到 dest. 目标位置是x,y;目标的宽度和高度是width,height; transparent表示是否使用色键
int DDraw_Draw_Surface(LPDIRECTDRAWSURFACE7 source, int x, int y, int width, int height, LPDIRECTDRAWSURFACE7 dest, int transparent = 1, float scale = 1.0f)
{
RECT dest_rect;
RECT src_rect;
src_rect.left = 0;
src_rect.top = 0;
src_rect.right = width - 1;
src_rect.bottom = height - 1;
dest_rect.left = x;
dest_rect.top = y;
dest_rect.right = x + width*scale - 1;
dest_rect.bottom = y + height*scale - 1;
if (transparent)
{
if (FAILED(dest->Blt(&dest_rect, source, &src_rect, (DDBLT_WAIT | DDBLT_KEYSRC), NULL)))
{
return 0;
}
}
else
{
if (FAILED(dest->Blt(&dest_rect, source, &src_rect, (DDBLT_WAIT), NULL)))
{
return 0;
}
}
return 1;
}填充颜色的简单示例
1 | int TestBlitFillColor() |