Browse Source

Added debugging util to save D2D render targets.

pull/2115/head
Steven Kirk 8 years ago
parent
commit
f82ee356bd
  1. 19
      src/Windows/Avalonia.Direct2D1/Media/Imaging/D2DRenderTargetBitmapImpl.cs
  2. 13
      src/Windows/Avalonia.Direct2D1/Utils/DebugUtils.cs

19
src/Windows/Avalonia.Direct2D1/Media/Imaging/D2DRenderTargetBitmapImpl.cs

@ -1,8 +1,10 @@
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System.IO;
using Avalonia.Platform;
using Avalonia.Rendering;
using Avalonia.Utilities;
using SharpDX;
using SharpDX.Direct2D1;
using D2DBitmap = SharpDX.Direct2D1.Bitmap;
@ -49,5 +51,22 @@ namespace Avalonia.Direct2D1.Media.Imaging
{
return new OptionalDispose<D2DBitmap>(_renderTarget.Bitmap, false);
}
public override void Save(Stream stream)
{
using (var wic = new WicRenderTargetBitmapImpl(PixelSize, Dpi))
{
using (var dc = wic.CreateDrawingContext(null))
{
dc.DrawImage(
RefCountable.CreateUnownedNotClonable(this),
1,
new Rect(PixelSize.ToSize(Dpi.X)),
new Rect(PixelSize.ToSize(Dpi.X)));
}
wic.Save(stream);
}
}
}
}

13
src/Windows/Avalonia.Direct2D1/Utils/DebugUtils.cs

@ -0,0 +1,13 @@
using Avalonia.Direct2D1.Media.Imaging;
namespace Avalonia.Direct2D1.Utils
{
internal static class DebugUtils
{
public static void Save(SharpDX.Direct2D1.BitmapRenderTarget bitmap, string filename)
{
var rtb = new D2DRenderTargetBitmapImpl(bitmap);
rtb.Save(filename);
}
}
}
Loading…
Cancel
Save