[函数名称]
图像平移变换函数TranslationProcess(WriteableBitmap src,int x,int y)
[函数代码]
///<summary>
/// Translation process.
///</summary>
///<param name="src">Source image.</param>
///<param name="x">Translate value of x.</param>
///<param name="y">Translate value of y.</param>
///<returns></returns>
publicstaticWriteableBitmap TranslationProcess(WriteableBitmap src,int x,int y)18平移变换
{
if(src!=null )
{
int w = src.PixelWidth;
int h = src.PixelHeight;
WriteableBitmap translateImage =newWriteableBitmap(w, h);
byte[] temp = src.PixelBuffer.ToArray();
byte[] tempMask =newbyte[w * h * 4];
for (int j = 0; j < h; j++)
{
for (int i = 0; i < w; i ++)
{
if (i + x < 0 || i + x >= w || j + y < 0 || j + y >= h)
{
tempMask[i * 4 + j * w * 4] = (byte)0;
tempMask[i * 4 + 1 + j * w * 4] = (byte)0;
tempMask[i * 4 + 2 + j * w * 4] = (byte)0;
}
else
{
tempMask[i * 4 + j * w * 4] = (byte)(temp[(i + x) * 4 + (j + y) * w * 4]);
tempMask[i * 4 + 1 + j * w * 4] = (byte)(temp[(i + x) * 4 + 1 + (j + y) * w * 4]);
tempMask[i * 4 + 2 + j * w * 4] = (byte)(temp[(i + x) * 4 + 2 + (j + y) * w * 4]);
tempMask[i * 4 + 3 + j * w * 4] = (byte)(temp[(i + x) * 4 + 3 + (j + y) * w * 4]);
}
}
}
Stream sTemp = translateImage.PixelBuffer.AsStream();
sTemp.Seek(0, SeekOrigin.Begin);
sTemp.Write(tempMask, 0, w * 4 * h);
return translateImage;
}
else
{
returnnull;
}
}
[图像效果]