static private Font GetFont(Layout.FontInfo fontInfo) { if (_fonts.TryGetValue(fontInfo, out var font)) { return(font); } font = new Font(fontInfo.Name, fontInfo.Size, fontInfo.Style); _fonts.Add(fontInfo, font); return(font); }
static Size MeasureString(Layout.FontInfo fontInfo, string text) { var key = new Tuple <Layout.FontInfo, string>(fontInfo, text); if (_measureResults.TryGetValue(key, out var result)) { return(result); } var font = GetFont(fontInfo); var siz = _measureGraphics.MeasureString(text, font); result = new Size((int)Math.Ceiling(siz.Width), (int)Math.Ceiling(siz.Height)); _measureResults.Add(key, result); return(result); }