public RenderedBitmap Render(EpfFrame frame, ColorPalette palette) { if (frame == null) { throw new ArgumentNullException("frame"); } if (palette == null) { throw new ArgumentNullException("palette"); } palette = palette.MakeGrayscale(); var format = PixelFormats.Bgra32; var width = frame.Width; var height = frame.Height; var stride = (width * 4) + (width % 4); var bits = new byte[height * stride]; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { var fixedX = x; var fixedY = y; var threshold = 12; if (fixedX < threshold) { if (width >= threshold) { fixedX = width - (threshold - fixedX); } if (fixedY > 0) { fixedY--; } } else { fixedX -= threshold; } var pixel = frame.RawData[x + y * width]; if (pixel > 0) { SetPixel(bits, fixedX, fixedY, stride, palette[pixel]); } else { SetPixel(bits, fixedX, fixedY, stride, Colors.Transparent); } } } var bitmap = new RenderedBitmap(width, height, stride, format, bits); return(bitmap); }
public RenderedBitmap Render(EpfFrame frame, ColorPalette palette) { if (frame == null) throw new ArgumentNullException("frame"); if (palette == null) throw new ArgumentNullException("palette"); palette = palette.MakeGrayscale(); var format = PixelFormats.Bgra32; var width = frame.Width; var height = frame.Height; var stride = (width * 4) + (width % 4); var bits = new byte[height * stride]; for (int x = 0; x < width; x++) for (int y = 0; y < height; y++) { var fixedX = x; var fixedY = y; var threshold = 12; if (fixedX < threshold) { if (width >= threshold) fixedX = width - (threshold - fixedX); if (fixedY > 0) fixedY--; } else fixedX -= threshold; var pixel = frame.RawData[x + y * width]; if (pixel > 0) SetPixel(bits, fixedX, fixedY, stride, palette[pixel]); else SetPixel(bits, fixedX, fixedY, stride, Colors.Transparent); } var bitmap = new RenderedBitmap(width, height, stride, format, bits); return bitmap; }