From dcb7624ccc076770a28d747773378078cbaa9e1c Mon Sep 17 00:00:00 2001 From: MayNL Date: Tue, 14 Apr 2026 19:09:56 -0400 Subject: [PATCH] Create ImageCollectionExtension -Added basic Insert method for ImageCollections --- .../Controls/Editor/PckEditor.Designer.cs | 2 +- .../Extensions/ImageCollectionExtensions.cs | 36 +++++++++++++++++++ PckStudio.Core/Extensions/ImageExtensions.cs | 6 ++-- PckStudio.Core/PckStudio.Core.csproj | 1 + 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 PckStudio.Core/Extensions/ImageCollectionExtensions.cs diff --git a/PCK-Studio/Controls/Editor/PckEditor.Designer.cs b/PCK-Studio/Controls/Editor/PckEditor.Designer.cs index d3298fb7..63161eed 100644 --- a/PCK-Studio/Controls/Editor/PckEditor.Designer.cs +++ b/PCK-Studio/Controls/Editor/PckEditor.Designer.cs @@ -1,4 +1,4 @@ -using System.Windows.Forms; +using System.Windows.Forms; namespace PckStudio.Controls { diff --git a/PckStudio.Core/Extensions/ImageCollectionExtensions.cs b/PckStudio.Core/Extensions/ImageCollectionExtensions.cs new file mode 100644 index 00000000..01b0e9ad --- /dev/null +++ b/PckStudio.Core/Extensions/ImageCollectionExtensions.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace PckStudio.Core.Extensions +{ + public static class ImageCollectionExtensions + { + public static void Insert(this ImageList.ImageCollection _, int index, string key, Image image) + { + var images = new List(); + var keys = new List(); + + for (int i = 0; i < _.Count; i++) + { + keys.Add(_.Keys[i]); + images.Add(_[i]); + } + + images.Insert(index, image); + keys.Insert(index, key); + + _.Clear(); + + for (int i = 0; i < images.Count; i++) + { + _.Add(keys[i], images[i]); + } + } + } +} diff --git a/PckStudio.Core/Extensions/ImageExtensions.cs b/PckStudio.Core/Extensions/ImageExtensions.cs index a958c1e0..682ce1e2 100644 --- a/PckStudio.Core/Extensions/ImageExtensions.cs +++ b/PckStudio.Core/Extensions/ImageExtensions.cs @@ -214,7 +214,7 @@ namespace PckStudio.Core.Extensions Marshal.Copy(baseImageData.Scan0, baseImageBuffer, 0, baseImageBuffer.Length); - BitmapData overlayImageData = overlayImage.LockBits(new Rectangle(Point.Empty, overlayImage.Size), + BitmapData overlayImageData = overlayImage.LockBits(new Rectangle(Point.Empty, overlayImage.Size), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); byte[] overlayImageBuffer = new byte[overlayImageData.Stride * overlayImageData.Height]; @@ -258,7 +258,7 @@ namespace PckStudio.Core.Extensions ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); byte[] overlayImageBuffer = new byte[overlayImageData.Stride * overlayImageData.Height]; - + Marshal.Copy(overlayImageData.Scan0, overlayImageBuffer, 0, overlayImageBuffer.Length); overlayImage.UnlockBits(overlayImageData); @@ -282,4 +282,4 @@ namespace PckStudio.Core.Extensions return bitmapResult; } } -} +} \ No newline at end of file diff --git a/PckStudio.Core/PckStudio.Core.csproj b/PckStudio.Core/PckStudio.Core.csproj index 6114f9f1..3ee2df97 100644 --- a/PckStudio.Core/PckStudio.Core.csproj +++ b/PckStudio.Core/PckStudio.Core.csproj @@ -73,6 +73,7 @@ +