From 1a8ed5ecf6da18991aba7643208f835d17b0bef0 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Wed, 5 Jun 2019 00:07:21 +0300 Subject: [PATCH 1/2] [SKIA] Don't pass GrContext to RTB --- src/Skia/Avalonia.Skia/PlatformRenderInterface.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs b/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs index 362fd028cf..15f38b1c4f 100644 --- a/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs +++ b/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs @@ -111,8 +111,7 @@ namespace Avalonia.Skia Width = size.Width, Height = size.Height, Dpi = dpi, - DisableTextLcdRendering = false, - GrContext = GrContext + DisableTextLcdRendering = false }; return new SurfaceRenderTarget(createInfo); From 38f41336588ed6f6a31dbfdfd8867f94d9a8ab11 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Wed, 5 Jun 2019 00:07:36 +0300 Subject: [PATCH 2/2] RenderTargetBitmapPage in RenderDemo --- samples/RenderDemo/MainWindow.xaml | 3 ++ .../Pages/RenderTargetBitmapPage.cs | 49 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 samples/RenderDemo/Pages/RenderTargetBitmapPage.cs diff --git a/samples/RenderDemo/MainWindow.xaml b/samples/RenderDemo/MainWindow.xaml index 344250ee2b..7f63e7725f 100644 --- a/samples/RenderDemo/MainWindow.xaml +++ b/samples/RenderDemo/MainWindow.xaml @@ -38,6 +38,9 @@ + + + diff --git a/samples/RenderDemo/Pages/RenderTargetBitmapPage.cs b/samples/RenderDemo/Pages/RenderTargetBitmapPage.cs new file mode 100644 index 0000000000..3eb2276c48 --- /dev/null +++ b/samples/RenderDemo/Pages/RenderTargetBitmapPage.cs @@ -0,0 +1,49 @@ +using System.Diagnostics; +using Avalonia; +using Avalonia.Controls; +using Avalonia.LogicalTree; +using Avalonia.Media; +using Avalonia.Media.Imaging; +using Avalonia.Threading; +using Avalonia.Visuals.Media.Imaging; + +namespace RenderDemo.Pages +{ + public class RenderTargetBitmapPage : Control + { + private RenderTargetBitmap _bitmap; + + protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs e) + { + _bitmap = new RenderTargetBitmap(new PixelSize(200, 200), new Vector(96, 96)); + base.OnAttachedToLogicalTree(e); + } + + protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs e) + { + _bitmap.Dispose(); + _bitmap = null; + base.OnDetachedFromLogicalTree(e); + } + + readonly Stopwatch _st = Stopwatch.StartNew(); + public override void Render(DrawingContext context) + { + using (var ctxi = _bitmap.CreateDrawingContext(null)) + using(var ctx = new DrawingContext(ctxi, false)) + using (ctx.PushPostTransform(Matrix.CreateTranslation(-100, -100) + * Matrix.CreateRotation(_st.Elapsed.TotalSeconds) + * Matrix.CreateTranslation(100, 100))) + { + ctxi.Clear(default); + ctx.FillRectangle(Brushes.Fuchsia, new Rect(50, 50, 100, 100)); + } + + context.DrawImage(_bitmap, 1, + new Rect(0, 0, 200, 200), + new Rect(0, 0, 200, 200)); + Dispatcher.UIThread.Post(InvalidateVisual, DispatcherPriority.Background); + base.Render(context); + } + } +}