diff --git a/OpenNest/ColorSchemeRegistry.cs b/OpenNest/ColorSchemeRegistry.cs index 01ea8df..8947726 100644 --- a/OpenNest/ColorSchemeRegistry.cs +++ b/OpenNest/ColorSchemeRegistry.cs @@ -17,8 +17,18 @@ namespace OpenNest ["Dark"] = BuildDark() }; - public static IEnumerable AllSchemes => - builtIns.Values.Concat(LoadDiskSchemes()); + private static List diskCache; + + public static IEnumerable AllSchemes + { + get + { + diskCache ??= LoadDiskSchemes().ToList(); + return builtIns.Values.Concat(diskCache); + } + } + + public static void Refresh() => diskCache = null; public static ColorScheme Get(string name) { diff --git a/OpenNest/ColorSchemeSerializer.cs b/OpenNest/ColorSchemeSerializer.cs index 146c2a5..2c7b7ae 100644 --- a/OpenNest/ColorSchemeSerializer.cs +++ b/OpenNest/ColorSchemeSerializer.cs @@ -59,6 +59,8 @@ namespace OpenNest if (string.IsNullOrWhiteSpace(hex)) return Color.Black; var h = hex.TrimStart('#'); + if (h.Length < 6) + return Color.Black; var r = byte.Parse(h.Substring(0, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture); var g = byte.Parse(h.Substring(2, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture); var b = byte.Parse(h.Substring(4, 2), NumberStyles.HexNumber, CultureInfo.InvariantCulture); diff --git a/OpenNest/Controls/PlateView.cs b/OpenNest/Controls/PlateView.cs index 387f781..189cba8 100644 --- a/OpenNest/Controls/PlateView.cs +++ b/OpenNest/Controls/PlateView.cs @@ -464,6 +464,9 @@ namespace OpenNest.Controls protected override void OnPaint(PaintEventArgs e) { + if (BackColor != ColorScheme.BackgroundColor) + BackColor = ColorScheme.BackgroundColor; + e.Graphics.SmoothingMode = SmoothingMode.HighSpeed; if (DrawOrigin)