欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#图像处理之图像平移的方法

程序员文章站 2024-01-28 11:59:34
本文实例讲述了c#图像处理之图像平移的方法。分享给大家供大家参考。具体如下: //定义图像平移函数 private static bitmap offsetp(...

本文实例讲述了c#图像处理之图像平移的方法。分享给大家供大家参考。具体如下:

//定义图像平移函数
private static bitmap offsetp(bitmap a,int s,int v)
{
 system.drawing.imaging.bitmapdata srcdata = a.lockbits(new rectangle (0,0,a.width ,a.height) ,system .drawing .imaging .imagelockmode .readwrite ,a.pixelformat );
 intptr ptr = srcdata.scan0;
 int bytes = srcdata.stride * a.height;
 byte[]grayvlaues=new byte[bytes];
 system.runtime.interopservices.marshal.copy(ptr ,grayvlaues ,0,bytes);
 byte[] temparray=new byte[bytes];
 for (int i = 0; i < bytes; i++)
 {
  temparray[i] = 255;
 }
 for (int i = 0; i < a.width * 3; i += 3)
 {
  if ((i + s*3) < a.width*3 && (i + s*3) > 0)
  {
   for (int j = 0; j < a.height; j++)
   {
   if ((j + v) < a.height && (j + v) > 0)
   {
   temparray[(i + s * 3) + (j + v) * srcdata.stride] = grayvlaues[i + j * srcdata.stride];
   temparray[i + s * 3 + 1 + (j + v) * srcdata.stride] = grayvlaues[i + 1 + j * srcdata.stride];
   temparray[i + s * 3 + 2 + (j + v) * srcdata.stride] = grayvlaues[i + 2 + j * srcdata.stride];
   }
   }
  }
  }
 grayvlaues = (byte[])temparray.clone();
 system.runtime.interopservices.marshal.copy(grayvlaues ,0,ptr, bytes);
 a.unlockbits(srcdata );
 return a;
}

希望本文所述对大家的c#程序设计有所帮助。