在很多游戏中,将鼠标移到人物上,人物的边缘上就会出现一道光边。这也就是笔者将要和大家讨论的,如何找出这一边缘。
其实要找出它也不难,在游戏所使用的图片中,都包含有透明色和不透明色两部分,那么问题就很简单了,在透明色和不透明色相接的地方就是边缘。请看下面的程序:
程序功能:画指定区域图像的边缘在指定位置 |
x,y :画边缘的坐标地址 x1,y1 :指定区域左上角的坐标 x2,y2 :指定区域右下角的坐标 TColor:透明色 |
var16 i,j; uvar16 Color,TColor;for(i=y1;i<=y2;i++) for(j=x1;j<=x2;j++) { Color=GetPixel(j,i); if(Color!=TColor) //如果这个点不是透明色 { if(j==x1||GetPixel(j-1,i)==TColor)PutPixel(j-x1+x-1,i-y1+y ); if(j==x2||GetPixel(j+1,i)==TColor)PutPixel(j-x1+x+1,i-y1+y ); if(i==y1||GetPixel(j,i-1)==TColor)PutPixel(j-x1+x ,i-y1+y-1); if(i==y2||GetPixel(j,i+1)==TColor)PutPixel(j-x1+x ,i-y1+y+1); } } |