public void WrapSystemDrawingBitmap_WhenOwned() { if (ShouldSkipBitmapTest) { return; } using (var bmp = new Bitmap(51, 23)) { var memoryManager = new BitmapMemoryManager(bmp); Bgra32 bg = Color.Red; Bgra32 fg = Color.Green; using (var image = Image.WrapMemory(memoryManager, bmp.Width, bmp.Height)) { Assert.Equal(memoryManager.Memory, image.GetRootFramePixelBuffer().GetSingleMemory()); Assert.True(image.TryGetSinglePixelSpan(out Span <Bgra32> imageSpan)); imageSpan.Fill(bg); for (var i = 10; i < 20; i++) { image.GetPixelRowSpan(i).Slice(10, 10).Fill(fg); } } Assert.True(memoryManager.IsDisposed); string fn = System.IO.Path.Combine( TestEnvironment.ActualOutputDirectoryFullPath, $"{nameof(this.WrapSystemDrawingBitmap_WhenOwned)}.bmp"); bmp.Save(fn, ImageFormat.Bmp); } }
public void WrapSystemDrawingBitmap_WhenOwned() { if (ShouldSkipBitmapTest) { return; } using (var bmp = new Bitmap(51, 23)) { var memoryManager = new BitmapMemoryManager(bmp); Bgra32 bg = NamedColors <Bgra32> .Red; Bgra32 fg = NamedColors <Bgra32> .Green; using (var image = Image.WrapMemory(memoryManager, bmp.Width, bmp.Height)) { Assert.Equal(memoryManager.Memory, image.GetPixelMemory()); image.Mutate(c => c.Fill(bg).Fill(fg, new RectangularPolygon(10, 10, 10, 10))); } Assert.True(memoryManager.IsDisposed); string fn = System.IO.Path.Combine( TestEnvironment.ActualOutputDirectoryFullPath, $"{nameof(this.WrapSystemDrawingBitmap_WhenOwned)}.bmp"); bmp.Save(fn, ImageFormat.Bmp); } }
public void WrapSystemDrawingBitmap_WhenObserved() { if (ShouldSkipBitmapTest) { return; } using (var bmp = new Bitmap(51, 23)) { using (var memoryManager = new BitmapMemoryManager(bmp)) { Memory <Bgra32> memory = memoryManager.Memory; Bgra32 bg = Color.Red; Bgra32 fg = Color.Green; using (var image = Image.WrapMemory(memory, bmp.Width, bmp.Height)) { Assert.Equal(memory, image.GetRootFramePixelBuffer().DangerousGetSingleMemory()); image.GetPixelMemoryGroup().Fill(bg); image.ProcessPixelRows(accessor => { for (var i = 10; i < 20; i++) { accessor.GetRowSpan(i).Slice(10, 10).Fill(fg); } }); } Assert.False(memoryManager.IsDisposed); } if (!Directory.Exists(TestEnvironment.ActualOutputDirectoryFullPath)) { Directory.CreateDirectory(TestEnvironment.ActualOutputDirectoryFullPath); } string fn = System.IO.Path.Combine( TestEnvironment.ActualOutputDirectoryFullPath, $"{nameof(this.WrapSystemDrawingBitmap_WhenObserved)}.bmp"); bmp.Save(fn, ImageFormat.Bmp); } }