diff --git a/AssetStudioUtility/SpriteHelper.cs b/AssetStudioUtility/SpriteHelper.cs index ab3795c..acb35e1 100644 --- a/AssetStudioUtility/SpriteHelper.cs +++ b/AssetStudioUtility/SpriteHelper.cs @@ -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(rect.Width, rect.Height, SixLabors.ImageSharp.Color.Black)) {