|
|
我用的是矩形的Tile,总大小是256×256。每张位图上有8×8个Tile。
所以每个tile应该是32×32。对吧?
页面的大小是800×600。(后备缓冲 )
所以每个页面应该画25×18.75个tile。
int DrawMap()
{
memset(&ddbltfx,0,sizeof(ddbltfx));
ddbltfx.dwSize=sizeof(ddbltfx);
//rect.left=x1;rect.top=y1;rect.right=x2;rect.bottom=y2
int x1=0,y1=0,x2=31,y2=31;
for(int x=0;x<25;x++)
{
//归零。从第一列继续画
y1=0;
y2=31;
for(int y=0;y<18;y++)
{
//把离屏表面的tile blt()到后备缓冲
SurfaceToBack(map1s,0,0,31,31,lpddsback,x1,y1,x2,y2);
//maps1是离屏表面。在这仅读取第一个tile
y1=y1+32;
y2=y2+32;
}
x1=x1+32;
x2=x2+32;
}
return 1;
}
问题是:
按以上的程序画后备缓冲后,得到的是每个tile后面和下面有1个象素的空隙。若是改成
int x1=0,y1=0,x2=31,y2=31;
则画出来刚好。不知道是那里计算出了错? |
|