mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-06-10 19:14:37 +00:00
Add GraphicsExtensions and move GraphicsConfig
This commit is contained in:
38
PCK-Studio/Classes/Extensions/GraphicsExtensions.cs
Normal file
38
PCK-Studio/Classes/Extensions/GraphicsExtensions.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace PckStudio.Extensions
|
||||
{
|
||||
public struct GraphicsConfig
|
||||
{
|
||||
public GraphicsConfig()
|
||||
{
|
||||
CompositingQuality = CompositingQuality.Default;
|
||||
InterpolationMode = InterpolationMode.Default;
|
||||
SmoothingMode = SmoothingMode.Default;
|
||||
PixelOffsetMode = PixelOffsetMode.Default;
|
||||
}
|
||||
|
||||
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; }
|
||||
}
|
||||
|
||||
internal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Diagnostics;
|
||||
using System;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Media.Media3D;
|
||||
using System.Web;
|
||||
|
||||
namespace PckStudio.Extensions
|
||||
{
|
||||
@@ -110,25 +108,6 @@ namespace PckStudio.Extensions
|
||||
return new Size(width, heigh);
|
||||
}
|
||||
|
||||
public struct GraphicsConfig
|
||||
{
|
||||
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 void Apply(Graphics graphics)
|
||||
{
|
||||
graphics.CompositingMode = CompositingMode;
|
||||
graphics.CompositingQuality = CompositingQuality;
|
||||
graphics.InterpolationMode = InterpolationMode;
|
||||
graphics.SmoothingMode = SmoothingMode;
|
||||
graphics.PixelOffsetMode = PixelOffsetMode;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static Image ResizeImage(this Image image, int width, int height, GraphicsConfig graphicsConfig)
|
||||
{
|
||||
var destRect = new Rectangle(0, 0, width, height);
|
||||
@@ -138,7 +117,7 @@ namespace PckStudio.Extensions
|
||||
|
||||
using (var graphics = Graphics.FromImage(destImage))
|
||||
{
|
||||
graphicsConfig.Apply(graphics);
|
||||
graphics.ApplyConfig(graphicsConfig);
|
||||
using (var wrapMode = new ImageAttributes())
|
||||
{
|
||||
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
|
||||
@@ -169,7 +148,6 @@ namespace PckStudio.Extensions
|
||||
|
||||
public static Image Blend(this Image image, Image overlay, BlendMode mode)
|
||||
{
|
||||
Stopwatch stopwatch = Stopwatch.StartNew();
|
||||
if (image is not Bitmap baseImage || overlay is not Bitmap overlayImage)
|
||||
return image;
|
||||
BitmapData baseImageData = baseImage.LockBits(new Rectangle(Point.Empty, baseImage.Size),
|
||||
@@ -200,8 +178,6 @@ namespace PckStudio.Extensions
|
||||
bitmapResult.UnlockBits(resultImageData);
|
||||
baseImage.UnlockBits(baseImageData);
|
||||
overlayImage.UnlockBits(overlayImageData);
|
||||
stopwatch.Stop();
|
||||
Debug.WriteLine($"{nameof(ImageExtensions.Blend)} took {stopwatch.ElapsedMilliseconds}ms");
|
||||
return bitmapResult;
|
||||
}
|
||||
|
||||
|
||||
@@ -1027,7 +1027,7 @@ namespace PckStudio.Forms
|
||||
{
|
||||
var ms = new MemoryStream(skinTexture.Data);
|
||||
Bitmap saveSkin = new Bitmap(Image.FromStream(ms));
|
||||
var config = new ImageExtensions.GraphicsConfig()
|
||||
var config = new GraphicsConfig()
|
||||
{
|
||||
CompositingMode = CompositingMode.SourceCopy,
|
||||
CompositingQuality = CompositingQuality.HighQuality,
|
||||
|
||||
@@ -172,6 +172,7 @@
|
||||
<Compile Include="Classes\API\PCKCenter\SaveLocalJSON.cs" />
|
||||
<Compile Include="Classes\Extensions\BlendMode.cs" />
|
||||
<Compile Include="Classes\Extensions\EnumerableExtensions.cs" />
|
||||
<Compile Include="Classes\Extensions\GraphicsExtensions.cs" />
|
||||
<Compile Include="Classes\FileTypes\CSMBFile.cs" />
|
||||
<Compile Include="Classes\FileTypes\PCKAudioFile.cs" />
|
||||
<Compile Include="Classes\FileTypes\Binka.cs" />
|
||||
|
||||
Reference in New Issue
Block a user