上边的那个仅仅是对单独点的处理,在实际应用中我们经常用到的是对局部位图的操作,所以下边的这个函数就显得很重要了。这个函数的功能是先判断mask中对应的点是否为透明色,如不是则将该点与bmp2的x,y点的颜色做Alph,并复制到bmp的相应的位置中。
void Mix_blit(BITMAP *bmp,BITMAP *mask,BITMAP *bmp2,int x,int y) { register int i,j; register unsigned short col1; for(j=0;j<mask->h;j++) for(i=0;i<mask->w;i++) if((col1=*(*(mask->line+j)+i))!=mask->MskCol) *(*(bmp->line+j+y1)+x1+i)=Alph50(*(*(bmp2->line+j+y)+i+x),col1); }
这个函数所做的工作和上一个相似,唯一不同的就是这个不会做Alph运算。 void Mask_blit(BITMAP *bmp,BITMAP *mask,BITMAP *bmp2,int x,int y) { register int i,j;unsigned char col1; for(j=0;j<mask->h;j++) for(i=0;i<mask->w;i++) if((col1=*(*(mask->line+j)+i))!=mask->MskCol) *(*(screen->line+j+y)+x+i)=*(*(bmp2->line+j+y)+i+x); }
以上两个函数在使用中需要注意的是bmp与bmp2位图的大小一定要完全相同或bmp>bmp2,从程序中就能看出这一点。
关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群 Copyright ©2003- 2025 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00251