static Pen GetPen(Generator generator, Color color, float thickness = 1f, DashStyle dashStyle = null) { var cache = generator.Cache <PenKey, Pen> (cacheKey); Pen pen; lock (cache) { var key = new PenKey(color.ToArgb(), thickness, dashStyle); if (!cache.TryGetValue(key, out pen)) { pen = new Pen(color, thickness, generator); if (dashStyle != null) { pen.DashStyle = dashStyle; } cache.Add(key, pen); } } return(pen); }
/// <summary> /// Gets a cached pen with the specified <paramref name="color"/> and <paramref name="thickness"/> /// </summary> /// <param name="color">Color of the cached pen to get</param> /// <param name="thickness">Thickness of the cached pen to get</param> /// <param name="dashStyle">Dash Style for the pen</param> /// <param name="generator">Generator to get the cached pen for</param> public static Pen Cached(Color color, float thickness = 1f, DashStyle dashStyle = null, Generator generator = null) { return(GetPen(generator, color, thickness, dashStyle)); }
public static Pen Cached(Color color, float thickness, DashStyle dashStyle, Generator generator) { return(GetPen(color, thickness, dashStyle)); }