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