Fix cutout glitch in some packed sprites

- Improved performance
(https://github.com/Perfare/AssetStudio/issues/1015)
This commit is contained in:
VaDiM 2023-05-14 16:05:32 +03:00
parent 5944dd8c58
commit 11b9ca37da

View File

@ -130,20 +130,24 @@ namespace AssetStudio
{
try
{
var triangles = GetTriangles(m_Sprite.m_RD);
var polygons = triangles.Select(x => new Polygon(new LinearLineSegment(x.Select(y => new PointF(y.X, y.Y)).ToArray()))).ToArray();
IPathCollection path = new PathCollection(polygons);
var matrix = Matrix3x2.CreateScale(m_Sprite.m_PixelsToUnits);
matrix *= Matrix3x2.CreateTranslation(m_Sprite.m_Rect.width * m_Sprite.m_Pivot.X - textureRectOffset.X, m_Sprite.m_Rect.height * m_Sprite.m_Pivot.Y - textureRectOffset.Y);
path = path.Transform(matrix);
var graphicsOptions = new GraphicsOptions
var triangles = GetTriangles(m_Sprite.m_RD);
var points = triangles.Select(x => x.Select(y => new PointF(y.X, y.Y)).ToArray());
var pathBuilder = new PathBuilder(matrix);
foreach (var p in points)
{
Antialias = false,
AlphaCompositionMode = PixelAlphaCompositionMode.DestOut
};
pathBuilder.AddLines(p);
pathBuilder.CloseFigure();
}
var path = pathBuilder.Build();
var options = new DrawingOptions
{
GraphicsOptions = graphicsOptions
GraphicsOptions = new GraphicsOptions
{
Antialias = false,
AlphaCompositionMode = PixelAlphaCompositionMode.DestOut
}
};
using (var mask = new Image<Bgra32>(rect.Width, rect.Height, SixLabors.ImageSharp.Color.Black))
{