public void Apply(Pixmap pxs) { int offset = 3; Pixmap pxsc = pxs.DeepCopy(); Pixel pxscpx; for (int row = 0, jMax = pxs.Height; row < jMax; row++) { for (int col = offset, iMax = pxs.Width - offset; col < iMax; col++) { pxscpx = pxsc[row, col]; pxscpx.B = pxs[row, col + offset].B; pxscpx.R = pxs[row, col - offset].R; pxsc[row, col] = pxscpx; } } for (int row = 0, jMax = pxs.Height; row < jMax; row++) { for (int col = 0, iMax = pxs.Width; col < iMax; col++) { pxs[row, col] = pxsc[row, col]; } } }
public void Apply(Pixmap pxs) { Pixel[,] pxMask = new Pixel[3, 3]; Pixel px; Pixmap pxsClone = pxs.DeepCopy(); for (int row = 1, maxRow = pxs.Height - 1; row < maxRow; row++) // padding 1px { for (int col = 1, maxCol = pxs.Width - 1; col < maxCol; col++) // padding 1px { pxMask[0, 0] = pxs[row - 1, col - 1]; pxMask[1, 0] = pxs[row - 1, col]; pxMask[2, 0] = pxs[row - 1, col + 1]; // pxMask[0, 1] = pxs[row, col - 1]; pxMask[1, 1] = pxs[row, col]; pxMask[2, 1] = pxs[row, col + 1]; // pxMask[0, 2] = pxs[row + 1, col - 1]; pxMask[1, 2] = pxs[row + 1, col]; pxMask[2, 2] = pxs[row + 1, col + 1]; int pxA = 0; int pxR = 0; int pxG = 0; int pxB = 0; for (int i = 0, len0 = _blurMask.GetLength(0); i < len0; i++) { for (int j = 0, len1 = _blurMask.GetLength(1); j < len1; j++) { pxA += pxMask[i, j].A * _blurMask[i, j]; pxR += pxMask[i, j].R * _blurMask[i, j]; pxG += pxMask[i, j].G * _blurMask[i, j]; pxB += pxMask[i, j].B * _blurMask[i, j]; } } px.A = (byte)(pxA / total); px.R = (byte)(pxR / total); px.G = (byte)(pxG / total); px.B = (byte)(pxB / total); pxsClone[row, col] = px; } } for (int row = 1, maxRow = pxs.Height - 1; row < maxRow; row++) // padding 1px { for (int col = 1, maxCol = pxs.Width - 1; col < maxCol; col++) // padding 1px { pxs[row, col] = pxsClone[row, col]; } } }