From e2153924d77e7f48c2114cb55e1508bddc841002 Mon Sep 17 00:00:00 2001 From: MattNL Date: Thu, 2 Mar 2023 21:55:57 -0500 Subject: [PATCH] Created ImageUtils to hold CreateImageList --- PCK-Studio/Classes/Utils/ImageUtils.cs | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 PCK-Studio/Classes/Utils/ImageUtils.cs diff --git a/PCK-Studio/Classes/Utils/ImageUtils.cs b/PCK-Studio/Classes/Utils/ImageUtils.cs new file mode 100644 index 00000000..83b5ad59 --- /dev/null +++ b/PCK-Studio/Classes/Utils/ImageUtils.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.Drawing.Drawing2D; +using System.Drawing; +using System.Diagnostics; + +namespace PckStudio.Classes.Utils +{ + internal class ImageUtils + { + public static IEnumerable CreateImageList(Image source, int size) + { + int img_row_count = source.Width / size; + int img_column_count = source.Height / size; + Debug.WriteLine($"{source.Width} {source.Height} {size} {size} {img_column_count} {img_row_count}"); + for (int i = 0; i < img_column_count * img_row_count; i++) + { + int row = i / img_row_count; + int column = i % img_row_count; + Rectangle tileArea = new Rectangle(new Point(column * size, row * size), new Size(size, size)); + Bitmap tileImage = new Bitmap(size, size); + using (Graphics gfx = Graphics.FromImage(tileImage)) + { + gfx.SmoothingMode = SmoothingMode.None; + gfx.InterpolationMode = InterpolationMode.NearestNeighbor; + gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; + + gfx.DrawImage(source, new Rectangle(0, 0, size, size), tileArea, GraphicsUnit.Pixel); + } + yield return tileImage; + } + yield break; + } + } +}