SDL设置转换色

SDL_Surface *ChangeColor(SDL_Surface *surface, int flag)
{
 //flag : 1.绿色2.红色3.蓝色
 
 SDL_Surface *sur=surface;
 SDL_LockSurface(sur);
 
 register  Uint32 *s = (Uint32 *)sur->pixels;
 
 int w = sur->w;
 int h = sur->h;
 
 long lPitch = surface->pitch>>2;

 int i,j;
 
 Uint32 sc;

 int alpha = 32;

 for(i=0; i<h; ++i)
 {
  for(j=0; j<w; ++j)
  {
   sc = (Uint32)s[lPitch*i+j];
   
   Uint32 sr , sg , sb , dr , dg , db;
   
   sr = (sc & 0xFF0000) >> 16 ;
   sg = (sc & 0xFF00) >> 8 ;
   sb = sc & 0xFF;
   
   if (flag==1) {
    dr = 0;
    dg = 255;
    db = 0;

    dg = ((sg * alpha) + (dg *(32-alpha))) >> 5 ;
   }
   if (flag==2) {
    dr = 255;
    dg = 0;
    db = 0;

    dr = ((sr * alpha) + (dr *(32-alpha))) >> 5 ;
   }
   if (flag==3) {
    dr = 0;
    dg = 0;
    db = 255;
    
    db = ((sb * alpha) + (db *(32-alpha))) >> 5 ;
   }
   s[lPitch*i+j] = (Uint32) (dr <<16)|(dg<<8)|db ;
  }
 }
 SDL_UnlockSurface(sur);
 return sur;
}

change 1 bmp's oranginal color , alpha blent to a color post by flag....1.green,2,red,3,blue

shit ,use my 一上午时间,。。。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值