示例#1
0
        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);
        }
示例#2
0
        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;
        }