diff --git a/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj b/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj index 3e55efc..7f22e1d 100644 --- a/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj +++ b/ClosedXML/ClosedXML/ClosedXML/ClosedXML.csproj @@ -138,6 +138,7 @@ + diff --git a/ClosedXML/ClosedXML/ClosedXML/Extensions.cs b/ClosedXML/ClosedXML/ClosedXML/Extensions.cs index 449104f..dbc2e57 100644 --- a/ClosedXML/ClosedXML/ClosedXML/Extensions.cs +++ b/ClosedXML/ClosedXML/ClosedXML/Extensions.cs @@ -9,6 +9,7 @@ using System.Xml.Linq; using System.IO; using System.Xml; +using ClosedXML.Utils; [assembly: CLSCompliantAttribute(true)] namespace ClosedXML.Excel @@ -184,7 +185,6 @@ return font; } - private static Graphics graphics = Graphics.FromImage(new Bitmap(1, 1)); public static Double GetWidth(this IXLFontBase fontBase, String text, Dictionary fontCache) { if (XLHelper.IsNullOrWhiteSpace(text)) @@ -192,7 +192,7 @@ var font = GetCachedFont(fontBase, fontCache); - var textSize = graphics.MeasureString(text, font, Int32.MaxValue, StringFormat.GenericTypographic); + var textSize = GraphicsUtils.MeasureString(text, font); double width = (((textSize.Width / (double)7) * 256) - (128 / 7)) / 256; width = (double)decimal.Round((decimal)width + 0.2M, 2); @@ -213,7 +213,7 @@ public static Double GetHeight(this IXLFontBase fontBase, Dictionary fontCache) { var font = GetCachedFont(fontBase, fontCache); - var textSize = graphics.MeasureString("X", font, Int32.MaxValue, StringFormat.GenericTypographic); + var textSize = GraphicsUtils.MeasureString("X", font); return (double)textSize.Height * 0.85; } diff --git a/ClosedXML/ClosedXML/ClosedXML/Utils/GraphicsUtils.cs b/ClosedXML/ClosedXML/ClosedXML/Utils/GraphicsUtils.cs new file mode 100644 index 0000000..954c22c --- /dev/null +++ b/ClosedXML/ClosedXML/ClosedXML/Utils/GraphicsUtils.cs @@ -0,0 +1,22 @@ +using System; +using System.Drawing; + +namespace ClosedXML.Utils +{ + internal static class GraphicsUtils + { + public static SizeF MeasureString(string s, Font font) + { + SizeF result; + using (var image = new Bitmap(1, 1)) + { + using (var g = Graphics.FromImage(image)) + { + result = g.MeasureString(s, font, Int32.MaxValue, StringFormat.GenericTypographic); + } + } + + return result; + } + } +} diff --git a/ClosedXML/ClosedXML/ClosedXML_Net3.5/ClosedXML_Net3.5.csproj b/ClosedXML/ClosedXML/ClosedXML_Net3.5/ClosedXML_Net3.5.csproj index b73f954..b41afcb 100644 --- a/ClosedXML/ClosedXML/ClosedXML_Net3.5/ClosedXML_Net3.5.csproj +++ b/ClosedXML/ClosedXML/ClosedXML_Net3.5/ClosedXML_Net3.5.csproj @@ -876,6 +876,9 @@ PathHelper.cs + + Utils\GraphicsUtils.cs + XLHelper.cs