From e3259a8f5cf775b6a41c09c5f1ee2d13ac5dab87 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Wed, 19 Nov 2025 21:36:51 +0100 Subject: [PATCH] Core - Update GraphicsConfig --- PCK-Studio/Forms/Editor/CustomSkinEditor.cs | 6 +---- PCK-Studio/Forms/Editor/TextureAtlasEditor.cs | 11 ++++------ .../Extensions/GraphicsExtensions.cs | 22 +++++-------------- PckStudio.Core/Extensions/ImageExtensions.cs | 10 ++++----- PckStuido.ModelSupport/SkinModelImporter.cs | 6 +---- 5 files changed, 16 insertions(+), 39 deletions(-) diff --git a/PCK-Studio/Forms/Editor/CustomSkinEditor.cs b/PCK-Studio/Forms/Editor/CustomSkinEditor.cs index 41993f64..41e21e37 100644 --- a/PCK-Studio/Forms/Editor/CustomSkinEditor.cs +++ b/PCK-Studio/Forms/Editor/CustomSkinEditor.cs @@ -32,11 +32,7 @@ namespace PckStudio.Forms.Editor private Core.App.SettingsManager _settingsManager; - private static GraphicsConfig _graphicsConfig = new GraphicsConfig() - { - InterpolationMode = InterpolationMode.NearestNeighbor, - PixelOffsetMode = PixelOffsetMode.HighQuality, - }; + private static GraphicsConfig _graphicsConfig = GraphicsConfig.PixelPerfect(); private CustomSkinEditor() : this(null, null) { } diff --git a/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs b/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs index e10c37b1..55158e49 100644 --- a/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs +++ b/PCK-Studio/Forms/Editor/TextureAtlasEditor.cs @@ -81,7 +81,8 @@ namespace PckStudio.Forms.Editor private int SelectedIndex { - set { + set + { if (value < 0) { value += _atlas.TileCount; @@ -94,13 +95,9 @@ namespace PckStudio.Forms.Editor } } - private const ImageLayoutDirection _imageLayout = ImageLayoutDirection.Horizontal; + private readonly ImageLayoutDirection _imageLayout = ImageLayoutDirection.Horizontal; - private readonly GraphicsConfig _graphicsConfig = new GraphicsConfig() - { - InterpolationMode = InterpolationMode.NearestNeighbor, - PixelOffsetMode = PixelOffsetMode.HighQuality - }; + private readonly GraphicsConfig _graphicsConfig = GraphicsConfig.PixelPerfect(); private void UpdateAtlasDisplay() { diff --git a/PckStudio.Core/Extensions/GraphicsExtensions.cs b/PckStudio.Core/Extensions/GraphicsExtensions.cs index 48dd3fea..48238fc3 100644 --- a/PckStudio.Core/Extensions/GraphicsExtensions.cs +++ b/PckStudio.Core/Extensions/GraphicsExtensions.cs @@ -3,30 +3,20 @@ using System.Drawing.Drawing2D; namespace PckStudio.Core.Extensions { - public struct GraphicsConfig + public readonly struct GraphicsConfig(InterpolationMode interpolationMode, SmoothingMode smoothingMode, PixelOffsetMode pixelOffsetMode) { - public GraphicsConfig() - { - CompositingQuality = default; - InterpolationMode = default; - SmoothingMode = default; - PixelOffsetMode = default; - CompositingMode = default; - } + public InterpolationMode InterpolationMode { get; } = interpolationMode; + public SmoothingMode SmoothingMode { get; } = smoothingMode; + public PixelOffsetMode PixelOffsetMode { get; } = pixelOffsetMode; - public CompositingMode CompositingMode { get; set; } - public CompositingQuality CompositingQuality { get; set; } - public InterpolationMode InterpolationMode { get; set; } - public SmoothingMode SmoothingMode { get; set; } - public PixelOffsetMode PixelOffsetMode { get; set; } + public static GraphicsConfig PixelPerfect() + => new GraphicsConfig(InterpolationMode.NearestNeighbor, SmoothingMode.None, PixelOffsetMode.HighQuality); } public static class GraphicsExtensions { public static void ApplyConfig(this Graphics graphics, GraphicsConfig config) { - graphics.CompositingMode = config.CompositingMode; - graphics.CompositingQuality = config.CompositingQuality; graphics.InterpolationMode = config.InterpolationMode; graphics.SmoothingMode = config.SmoothingMode; graphics.PixelOffsetMode = config.PixelOffsetMode; diff --git a/PckStudio.Core/Extensions/ImageExtensions.cs b/PckStudio.Core/Extensions/ImageExtensions.cs index a958c1e0..8de201ad 100644 --- a/PckStudio.Core/Extensions/ImageExtensions.cs +++ b/PckStudio.Core/Extensions/ImageExtensions.cs @@ -40,15 +40,13 @@ namespace PckStudio.Core.Extensions public static Image GetArea(this Image source, Rectangle area) { - Image tileImage = new Bitmap(area.Width, area.Height); - using (Graphics gfx = Graphics.FromImage(tileImage)) + Image result = new Bitmap(area.Width, area.Height); + using (Graphics gfx = Graphics.FromImage(result)) { - gfx.SmoothingMode = SmoothingMode.None; - gfx.InterpolationMode = InterpolationMode.NearestNeighbor; - gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; + gfx.ApplyConfig(GraphicsConfig.PixelPerfect()); gfx.DrawImage(source, new Rectangle(Point.Empty, area.Size), area, GraphicsUnit.Pixel); } - return tileImage; + return result; } /// diff --git a/PckStuido.ModelSupport/SkinModelImporter.cs b/PckStuido.ModelSupport/SkinModelImporter.cs index 2cc7c2a8..8713e2d1 100644 --- a/PckStuido.ModelSupport/SkinModelImporter.cs +++ b/PckStuido.ModelSupport/SkinModelImporter.cs @@ -518,11 +518,7 @@ namespace PckStudio.ModelSupport areasToFix = areasToFix.Where(rect => rect.Size.Width > 0 && rect.Size.Height > 0); Image result = new Bitmap(texture); using var g = Graphics.FromImage(result); - g.ApplyConfig(new GraphicsConfig() - { - InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor, - PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality - }); + g.ApplyConfig(GraphicsConfig.PixelPerfect()); foreach (Rectangle area in areasToFix) { Image targetAreaImage = texture.GetArea(area);