示例#1
0
    private static Color GetThemedColor(int colorThemeIndex, double tintAndShade, Document doc)
    {
        // translate from wdThemeColorIndex to MsoThemeColorSchemeIndex
        MsoThemeColorSchemeIndex colorSchemeIndex = ThemeIndexToSchemeIndex(colorThemeIndex);
        // get color scheme by this index and take its RGB property, but this RGB still OLE RGB - i.e. BGR -> need to convert it to real RGB, i.e. use ColorTranslator.FromOle() and ToArgb after
        OfficeTheme      theme  = doc.DocumentTheme;
        ThemeColorScheme scheme = theme.ThemeColorScheme;
        ThemeColor       color  = scheme.Colors(colorSchemeIndex);
        int colorSchemeRGB      = ColorTranslator.FromOle(color.RGB).ToArgb();

        Marshal.ReleaseComObject(color);
        Marshal.ReleaseComObject(scheme);
        Marshal.ReleaseComObject(theme);

        // do RGB -> HSL translation to apply tint/shade
        HSL colorSchemeHSL = RGBtoHSL(colorSchemeRGB);

        // apply it
        if (tintAndShade > 0)
        {
            colorSchemeHSL.L += (1 - colorSchemeHSL.L) * tintAndShade;
        }
        else
        {
            colorSchemeHSL.L *= 1 - Math.Abs(tintAndShade);
        }

        // do backward HSL -> RGB translation
        int tintedAndShadedRGB = HSLtoRGB(colorSchemeHSL);

        return(Color.FromArgb(tintedAndShadedRGB));
    }
示例#2
0
        /// <summary>
        /// Lấy màu Solid Color
        /// </summary>
        /// <param name="themeColor"></param>
        /// <param name="index"></param>
        /// <returns></returns>
        public Core.Model.SolidColor GetSolidColor(ThemeColorScheme themeColor, MsoThemeColorSchemeIndex index)
        {
            Core.Model.SolidColor solid = new Core.Model.SolidColor();
            solid.Brightness = 1;
            solid.Color      = ConvertColor(themeColor.Colors(index).RGB);
            switch (index)
            {
            case MsoThemeColorSchemeIndex.msoThemeDark1:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_BackgrounDark1").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_BackgrounDark1").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeLight1:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_BackgrounDark2").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_BackgrounDark2").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeDark2:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_BackgrounLight1").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_BackgrounLight1").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeLight2:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_BackgrounLight2").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_BackgrounLight2").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeAccent1:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent1").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent1").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeAccent2:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent2").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent2").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeAccent3:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent3").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent3").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeAccent4:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent4").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent4").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeAccent5:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent5").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent5").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeAccent6:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent6").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_Accent6").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeHyperlink:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_Hyperlink").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_Hyperlink").ToString();
                break;

            case MsoThemeColorSchemeIndex.msoThemeFollowedHyperlink:
                solid.Name        = System.Windows.Application.Current.TryFindResource("ColorGallery_FollowedHyperlink").ToString();
                solid.SpecialName = System.Windows.Application.Current.TryFindResource("ColorGallery_FollowedHyperlink").ToString();
                break;

            default:
                break;
            }
            return(solid);
        }