将以下C#代码转换为DELPHI的··
public Bitmap Convolute(Bitmap srcImage) { if (scale == 0) scale = 1; int width = srcImage.Width; int height = srcImage.Height; Bitmap dstImage = (Bitmap)srcImage.Clone(); BitmapData srcData = srcImage.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); BitmapData dstData = dstImage.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb); int rectTop = 1; int rectBottom = height - 1; int rectLeft = 1; int rectRight = width - 1; unsafe { byte* src = (byte*)srcData.Scan0; byte* dst = (byte*)dstData.Scan0; int stride = srcData.Stride; int offset = stride - width * BPP; int pixel = 0; src += stride; dst += stride; for (int y = rectTop; y < rectBottom; y++) { src += BPP; dst += BPP; for (int x = rectLeft; x < rectRight; x++) { if (src[3] > 0) { for (int i = 0; i < 3; i++) { pixel =src[i - stride - BPP] * topLeft + src[i - stride] * topMid + src[i - stride + BPP] * topRight + src[i - BPP] * midLeft + src[i] * center + src[i + BPP] * midRight + src[i + stride - BPP] * bottomLeft + src[i + stride] * bottomMid + src[i + stride + BPP] * bottomRight; pixel = pixel / scale + kernelOffset; if (pixel < 0) pixel = 0; if (pixel > 255) pixel = 255; dst[i] = (byte)pixel; } } src += BPP; dst += BPP; } src += (offset + BPP); dst += (offset + BPP); } } srcImage.UnlockBits(srcData); dstImage.UnlockBits(dstData); srcImage.Dispose(); return dstImage; }