反色,霓虹灯,浮雕

1。反色

 

Bitmap desc  =   new  Bitmap(source.Width, source.Height);
BitmapData sourcedata 
=  source.LockBits( new  Rectangle( 0 0 , source.Width, source.Height), 
                ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData descdata 
=  desc.LockBits( new  Rectangle( 0 0 , desc.Width, desc.Height),
                ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

unsafe
{
      
byte *  sourceptr  =  ( byte * )sourcedata.Scan0;  
      
byte *  descptr  =  ( byte * )descdata.Scan0;
      
for  ( int  x  =   0 ; x  <  source.Height; x ++ )
      {
           
for  ( int  y  =   0 ; y  <  source.Width; y ++ )
           {
                
* (descptr ++ =  ( byte )( 255   -   * (sourceptr ++ ));
                
* (descptr ++ =  ( byte )( 255   -   * (sourceptr ++ ));
                
* (descptr ++ =  ( byte )( 255   -   * (sourceptr ++ ));
            }
            sourceptr 
+=  sourcedata.Stride  -  source.Width  *   3 ;
            descptr 
+=  descdata.Stride  -  desc.Width  *   3 ;
       }
}
source.UnlockBits(sourcedata);
desc.UnlockBits(descdata);

 

 

2。霓虹灯

 

Bitmap desc  =   new  Bitmap(source.Width, source.Height);
BitmapData sourcedata 
=  source.LockBits( new  Rectangle( 0 0 , source.Width, source.Height), 
                ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData descdata 
=  desc.LockBits( new  Rectangle( 0 0 , desc.Width, desc.Height),
                ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

unsafe
{
      
byte *  sourceptr  =  ( byte * )sourcedata.Scan0;  
      
byte *  descptr  =  ( byte * )descdata.Scan0;
      
int  step  =  source.Width  *   3 ;
      
double  value;
      
for  ( int  x  =   0 ; x  <  source.Height; x ++ )
      {
           
for  ( int  y  =   0 ; y  <  source.Width; y ++ )
           {
                value 
=   2   *  Math.Sqrt(( * sourceptr  -   * (sourceptr  +   3 ))  *  ( * sourceptr  -   * (sourceptr  +   3 ))  +
                        (
* sourceptr  -   * (sourceptr  +  step))  *  ( * sourceptr  -   * (sourceptr  +  step)));
                
* (descptr ++ =  value  >   255   ?  ( byte ) 255  : ( byte )(value);
                sourceptr
++ ;
            }
            sourceptr 
+=  sourcedata.Stride  -  source.Width  *   3 ;
            descptr 
+=  descdata.Stride  -  desc.Width  *   3 ;
       }
}
source.UnlockBits(sourcedata);
desc.UnlockBits(descdata);

 

 

3。浮雕

 

 Bitmap desc = new Bitmap(source.Width, source.Height);

BitmapData sourcedata  =  source.LockBits( new  Rectangle( 0 0 , source.Width, source.Height), 
                ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
BitmapData descdata 
=  desc.LockBits( new  Rectangle( 0 0 , desc.Width, desc.Height),
                ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb);

unsafe
{
      
byte *  sourceptr  =  ( byte * )sourcedata.Scan0;  
      
byte *  descptr  =  ( byte * )descdata.Scan0;
      
int  step  =  (source.Width  +   1 *   3 ;
      
double  value;
      
for  ( int  x  =   0 ; x  <  source.Height; x ++ )
      {
           
for  ( int  y  =   0 ; y  <  source.Width; y ++ )
           {
                value 
=  Math.Abs( * (sourceptr  -  step)  -   * sourceptr  +   128 );
                
* (descptr ++ =  value  >   255   ?  ( byte ) 255  : ( byte )(value);
                sourceptr
++ ;
            }
            sourceptr 
+=  sourcedata.Stride  -  source.Width  *   3 ;
            descptr 
+=  descdata.Stride  -  desc.Width  *   3 ;
       }
}
source.UnlockBits(sourcedata);
desc.UnlockBits(descdata);

 

 

你可能感兴趣的:(反色,霓虹灯,浮雕)