title: any can explain the function of stride in bitmapdata?
body: <pre><code>        Bitmap bit1 = new Bitmap( bmpimg , width , height );
          Bitmap bit2 = new Bitmap( bmp , width , height );
  
          Bitmap bmpresult = new Bitmap( width , height );
  
          BitmapData data1 = bit1.LockBits( new Rectangle( 0 , 0 , bit1.Width , bit1.Height ) , ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb );
          BitmapData data2 = bit2.LockBits( new Rectangle( 0 , 0 , bit2.Width , bit2.Height ) , ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb );
          BitmapData data3 = bmpresult.LockBits( new Rectangle( 0 , 0 , bmpresult.Width , bmpresult.Height ) , ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb );
  
  unsafe
          {
              int remain1 = data1.Stride - data1.Width * 3;
              int remain2 = data2.Stride - data2.Width * 3;
              int remain3 = data3.Stride - data3.Width * 3;
  
  
              byte* ptr1 = ( byte* )data1.Scan0;
              byte* ptr2 = ( byte* )data2.Scan0;
              byte* ptr3 = ( byte* )data3.Scan0;
  
              for( int i = 0 ; i &lt; height ; i ++ )
              {
                  for( int j = 0 ; j &lt; width * 3 ; j ++ )
                  {
                      ptr3[ 0 ] = ( byte ) ( XOR_Operator( ptr1[ 0 ] , ptr2[ 0 ] ) );
                      ptr1 ++;
                      ptr2 ++;
                      ptr3 ++;
                  }
  
                  ptr1 += remain1;
                  ptr2 += remain2;
                  ptr3 += remain3;
              }
  
  
          }
  
          bit1.UnlockBits( data1 );
          bit2.UnlockBits( data2 );
          bmpresult.UnlockBits( data3 );
  
          return bmpresult;
      }
  </code></pre>
  
  <p>is it necessary to get remain for data objects      </p>