private Bitmap AddWarpEffect(ref Bitmap image) { // build warp map int width = image.Width; int height = image.Height; IntPoint[,] warpMap = new IntPoint[height, width]; int size = 8; int maxOffset = -size + 1; for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int dx = (x / size) * size - x; int dy = (y / size) * size - y; if (dx + dy <= maxOffset) { dx = (x / size + 1) * size - 1 - x; } warpMap[y, x] = new IntPoint(dx, dy); } } // create filter ImageWarp filter = new ImageWarp(warpMap); // apply the filter Bitmap newImage = filter.Apply(image); return newImage; }