这时一篇查找精灵边缘的方法文章,但不很具体,只要知道在DirectX9中如何自由得到图片中某个的像素点颜色,我们就可以用下面的计算来搞定边边缘计算了。
楼上“老鼠”兄我看过你很多文章,还望指点一二,谢啊。
“精灵”可谓笔者最讨厌的一个字眼,太多的游戏编程者们使用“精灵”这一词,更是使笔者感到烦感。这回只是为了给大家说明一下问题所以才使用了“精灵”这一词汇。
在很多游戏中,将鼠标移到人物上,人物的边缘上就会出现一道光边。这也就是笔者将要和大家讨论的,如何找出这一边缘。
其实要找出它也不难,在游戏所使用的图片中,都包含有透明色和不透明色两部分,那么问题就很简单了,在透明色和不透明色相接的地方就是边缘。请看下面的程序:
程序功能:画指定区域图像的边缘在指定位置 |
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); } } | |