Exemplo n.º 1
0
		/// <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);
		}
Exemplo n.º 2
0
        /// <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());
        }
Exemplo n.º 3
0
        /// <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;
        }