/// <summary> /// Saves the specified render target as an image with the specified format. /// </summary> /// <param name="renderTarget">The render target to save.</param> /// <param name="stream">The stream to which to save the render target data.</param> /// <param name="format">The format with which to save the image.</param> private void Save(RenderTarget2D renderTarget, Stream stream, ImageFormat format) { var data = new Color[renderTarget.Width * renderTarget.Height]; renderTarget.GetData(data); Save(data, renderTarget.Width, renderTarget.Height, stream, format); }
/// <inheritdoc/> public override void SaveAsPng(RenderTarget2D renderTarget, Stream stream) { Contract.Require(renderTarget, nameof(renderTarget)); Contract.Require(stream, nameof(stream)); var data = new Color[renderTarget.Width * renderTarget.Height]; renderTarget.GetData(data); Save(data, renderTarget.Width, renderTarget.Height, stream, img => img.AsPNG()); }
/// <inheritdoc/> public override void SaveAsPng(RenderTarget2D renderTarget, Stream stream) { Contract.Require(renderTarget, "renderTarget"); Contract.Require(stream, "stream"); var data = new Color[renderTarget.Width * renderTarget.Height]; renderTarget.GetData(data); Save(data, renderTarget.Width, renderTarget.Height, stream, asPng: true); }
/// <summary> /// Converts the specified render target to a bitmap image. /// </summary> /// <param name="rt">The render target to convert.</param> /// <returns>The converted bitmap image.</returns> private Bitmap ConvertRenderTargetToBitmap(RenderTarget2D rt) { var data = new Color[rt.Width * rt.Height]; rt.GetData(data); var bmp = new Bitmap(rtarget.Width, rtarget.Height); var pixel = 0; for (int y = 0; y < rtarget.Height; y++) { for (int x = 0; x < rtarget.Width; x++) { bmp.SetPixel(x, y, System.Drawing.Color.FromArgb((int)data[pixel++].ToArgb())); } } return bmp; }
/// <summary> /// Converts the specified render target to a bitmap image. /// </summary> /// <param name="rt">The render target to convert.</param> /// <returns>The converted bitmap image.</returns> private Bitmap ConvertRenderTargetToBitmap(RenderTarget2D rt) { // HACK: Our buffer has been rounded up to the nearest // power of two, so at this point we clip it back down // to the size of the window. var window = Ultraviolet.GetPlatform().Windows.GetPrimary(); var windowWidth = window.DrawableSize.Width; var windowHeight = window.DrawableSize.Height; var data = new Color[rt.Width * rt.Height]; rt.GetData(data); var bmp = new Bitmap(windowWidth, windowHeight); var pixel = 0; for (int y = 0; y < rt.Height; y++) { for (int x = 0; x < rt.Width; x++) { if (x < windowWidth && y < windowHeight) { bmp.SetPixel(x, y, System.Drawing.Color.FromArgb((int)data[pixel].ToArgb())); } pixel++; } } return bmp; }