mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-22 18:25:31 +00:00
35 lines
1.3 KiB
C#
35 lines
1.3 KiB
C#
using System.Drawing;
|
|
using System.Drawing.Drawing2D;
|
|
|
|
namespace PckStudio.Core.Extensions
|
|
{
|
|
public readonly struct GraphicsConfig(InterpolationMode interpolationMode, SmoothingMode smoothingMode, PixelOffsetMode pixelOffsetMode)
|
|
{
|
|
public InterpolationMode InterpolationMode { get; } = interpolationMode;
|
|
public SmoothingMode SmoothingMode { get; } = smoothingMode;
|
|
public PixelOffsetMode PixelOffsetMode { get; } = pixelOffsetMode;
|
|
|
|
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.InterpolationMode = config.InterpolationMode;
|
|
graphics.SmoothingMode = config.SmoothingMode;
|
|
graphics.PixelOffsetMode = config.PixelOffsetMode;
|
|
}
|
|
|
|
public static Graphics Fill(this Graphics graphics, Rectangle area, Color color)
|
|
{
|
|
Region clip = graphics.Clip;
|
|
graphics.SetClip(area, CombineMode.Replace);
|
|
graphics.Clear(color);
|
|
graphics.SetClip(clip, CombineMode.Replace);
|
|
return graphics;
|
|
}
|
|
}
|
|
}
|