public static ResourceDictionary CreateTheme(string baseColorScheme, Color accentBaseColor, string name = null, bool changeImmediately = false) { name ??= $"RuntimeTheme_{baseColorScheme}_{accentBaseColor.ToString().Replace("#", string.Empty)}"; var generatorParameters = GetGeneratorParameters(); var themeTemplateContent = GetThemeTemplateContent(); var variant = generatorParameters.BaseColorSchemes.First(x => x.Name == baseColorScheme); var colorScheme = new ColorScheme(); colorScheme.Name = accentBaseColor.ToString().Replace("#", string.Empty); var values = colorScheme.Values; values.Add("MahApps.Colors.AccentBase", accentBaseColor.ToString()); values.Add("MahApps.Colors.Accent", Color.FromArgb(204, accentBaseColor.R, accentBaseColor.G, accentBaseColor.B).ToString()); values.Add("MahApps.Colors.Accent2", Color.FromArgb(153, accentBaseColor.R, accentBaseColor.G, accentBaseColor.B).ToString()); values.Add("MahApps.Colors.Accent3", Color.FromArgb(102, accentBaseColor.R, accentBaseColor.G, accentBaseColor.B).ToString()); values.Add("MahApps.Colors.Accent4", Color.FromArgb(51, accentBaseColor.R, accentBaseColor.G, accentBaseColor.B).ToString()); values.Add("MahApps.Colors.Highlight", accentBaseColor.ToString()); values.Add("MahApps.Colors.IdealForeground", IdealTextColor(accentBaseColor).ToString()); var xamlContent = new ColorSchemeGenerator().GenerateColorSchemeFileContent(generatorParameters, variant, colorScheme, themeTemplateContent, name, name); var resourceDictionary = (ResourceDictionary)XamlReader.Parse(xamlContent); var newTheme = new Theme(resourceDictionary); ThemeManager.AddTheme(newTheme.Resources); // Apply theme if (changeImmediately) { ThemeManager.ChangeTheme(Application.Current, newTheme); } return(resourceDictionary); }
public static Tuple <string, ResourceDictionary> CreateTheme(string baseColorScheme, Color accentBaseColor, Color highlightColor, string name = null, bool changeImmediately = false) { name = name ?? GenerateThemeName(baseColorScheme, accentBaseColor, highlightColor); var generatorParameters = GetGeneratorParameters(); var themeTemplateContent = GetThemeTemplateContent(); var variant = generatorParameters.BaseColorSchemes.First(x => x.Name == baseColorScheme); var colorScheme = new XamlColorSchemeGenerator.ColorScheme { Name = accentBaseColor.ToString().Replace("#", string.Empty) }; var values = colorScheme.Values; values.Add("Fluent.Ribbon.Colors.AccentBaseColor", accentBaseColor.ToString()); values.Add("Fluent.Ribbon.Colors.AccentColor80", Color.FromArgb(204, accentBaseColor.R, accentBaseColor.G, accentBaseColor.B).ToString()); values.Add("Fluent.Ribbon.Colors.AccentColor60", Color.FromArgb(153, accentBaseColor.R, accentBaseColor.G, accentBaseColor.B).ToString()); values.Add("Fluent.Ribbon.Colors.AccentColor40", Color.FromArgb(102, accentBaseColor.R, accentBaseColor.G, accentBaseColor.B).ToString()); values.Add("Fluent.Ribbon.Colors.AccentColor20", Color.FromArgb(51, accentBaseColor.R, accentBaseColor.G, accentBaseColor.B).ToString()); values.Add("Fluent.Ribbon.Colors.HighlightColor", highlightColor.ToString()); values.Add("Fluent.Ribbon.Colors.IdealForegroundColor", IdealTextColor(accentBaseColor).ToString()); var xamlContent = new ColorSchemeGenerator().GenerateColorSchemeFileContent(generatorParameters, variant, colorScheme, themeTemplateContent, name, name); var resourceDictionary = (ResourceDictionary)XamlReader.Parse(xamlContent); var newTheme = new Theme(resourceDictionary); ThemeManager.AddTheme(newTheme.Resources); // Apply theme if (changeImmediately) { ThemeManager.ChangeTheme(Application.Current, newTheme); } return(new Tuple <string, ResourceDictionary>(xamlContent, resourceDictionary)); }
protected override void AwakeWrapped() { colorSchemeGenerator = new ColorSchemeGenerator(this, colorSchemeData, backgroundImageToCamera); SetDefaultColorScheme(); }