From e64331107d7d7e29e735ec3c1d173b8420c7485a Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Sat, 4 Mar 2023 16:46:54 +0100 Subject: [PATCH] ImageExtentions - Update getting a tile/sub image --- .../Classes/Extentions/ImageExtentions.cs | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/PCK-Studio/Classes/Extentions/ImageExtentions.cs b/PCK-Studio/Classes/Extentions/ImageExtentions.cs index 640d9fca..d866b661 100644 --- a/PCK-Studio/Classes/Extentions/ImageExtentions.cs +++ b/PCK-Studio/Classes/Extentions/ImageExtentions.cs @@ -23,16 +23,7 @@ namespace PckStudio.Classes.Extentions int row = i / img_row_count; int column = i % img_row_count; Rectangle tileArea = new Rectangle(new Point(column * size.Height, row * size.Width), size); - Bitmap tileImage = new Bitmap(size.Width, size.Height); - using (Graphics gfx = Graphics.FromImage(tileImage)) - { - gfx.SmoothingMode = SmoothingMode.None; - gfx.InterpolationMode = InterpolationMode.NearestNeighbor; - gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; - - gfx.DrawImage(source, new Rectangle(Point.Empty, size), tileArea, GraphicsUnit.Pixel); - } - yield return tileImage; + yield return GetTileImage(source, tileArea, size); } yield break; } @@ -51,18 +42,22 @@ namespace PckStudio.Classes.Extentions ? (new Size(source.Width, source.Width), new Point(0, i * source.Width)) : (new Size(source.Height, source.Height), new Point(i * source.Height, 0)); Rectangle tileArea = new Rectangle(locationInfo.point, locationInfo.size); - Bitmap tileImage = new Bitmap(locationInfo.size.Width, locationInfo.size.Height); - using (Graphics gfx = Graphics.FromImage(tileImage)) - { - gfx.SmoothingMode = SmoothingMode.None; - gfx.InterpolationMode = InterpolationMode.NearestNeighbor; - gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; - gfx.DrawImage(source, new Rectangle(Point.Empty, locationInfo.size), tileArea, GraphicsUnit.Pixel); - } - yield return tileImage; + yield return GetTileImage(source, tileArea, locationInfo.size); } yield break; } + private static Image GetTileImage(Image source, Rectangle area, Size size, GraphicsUnit unit = GraphicsUnit.Pixel) + { + Image tileImage = new Bitmap(size.Width, size.Height); + using (Graphics gfx = Graphics.FromImage(tileImage)) + { + gfx.SmoothingMode = SmoothingMode.None; + gfx.InterpolationMode = InterpolationMode.NearestNeighbor; + gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; + gfx.DrawImage(source, new Rectangle(Point.Empty, size), area, unit); + } + return tileImage; + } } }