Skip to content

Commit a225a41

Browse files
authored
Merge pull request #2553 from cwensley/curtis/wpf-more-rendertargetbitmap
Wpf: Don't store RenderTargetBitmap anywhere
2 parents 9826d7c + 4a60587 commit a225a41

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/Eto.Wpf/Drawing/BitmapHandler.cs

+2
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ protected override void Initialize()
137137

138138
public void SetBitmap(swmi.BitmapSource bitmap)
139139
{
140+
if (bitmap is swmi.RenderTargetBitmap)
141+
bitmap = new swmi.WriteableBitmap(bitmap);
140142
Control = bitmap;
141143
SetFrozen();
142144
}

src/Eto.Wpf/Drawing/CachedBitmapFrame.cs

100644100755
+4-3
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,11 @@ public swmi.BitmapFrame Get(swmi.BitmapSource image, float scale, int width, int
3838
// There's no way to get around it other than just not creating that many and using GC.Collect/WaitForPendingFinalizers.
3939
// we can't do it in Eto as it'd be a serious performance hit.
4040
var target = new swmi.RenderTargetBitmap(scaledwidth, scaledheight, 96 * scale, 96 * scale, swm.PixelFormats.Default);
41-
target.Render(targetVisual);
42-
target.Freeze();
41+
target.RenderWithCollect(targetVisual);
42+
43+
var writable = new swmi.WriteableBitmap(target);
4344

44-
_cachedFrame = swmi.BitmapFrame.Create(target);
45+
_cachedFrame = swmi.BitmapFrame.Create(writable);
4546
_cachedFrame.Freeze();
4647
_scale = scale;
4748
_width = width;

0 commit comments

Comments
 (0)