怎样找出精灵的边缘

  “精灵”可谓笔者最讨厌的一个字眼,太多的游戏编程者们使用“精灵”这一词,更是使笔者感到烦感。这回只是为了给大家说明一下问题所以才使用了“精灵”这一词汇。

  在很多游戏中,将鼠标移到人物上,人物的边缘上就会出现一道光边。这也就是笔者将要和大家讨论的,如何找出这一边缘。

  其实要找出它也不难,在游戏所使用的图片中,都包含有透明色和不透明色两部分,那么问题就很简单了,在透明色和不透明色相接的地方就是边缘。请看下面的程序:

程序功能:画指定区域图像的边缘在指定位置
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);
        }
    }


来源:http://www.hyzgame.org/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值