Office 2010 AddIn development - Can I from code-behind read what theme the user is using?

匿名 (未验证) 提交于 2019-12-03 02:52:02

问题:

PowerPoint 2010 comes with three default themes, silver, black and blue. Is it possible to check which theme the user is currently using from code-behind?

回答1:

I use this code to setup colours for my interface depending on what theme is set.

public static class LFTheme      {         const int ThemeClassic = 0;         const int ThemeBlue = 1;         const int ThemeSilver = 2;         const int ThemeBlack = 3;          public static int Theme { get; set; }         public static Color BackColor { get; set; }         public static Color ForeColor { get; set; }         public static Color ForeColorLight { get; set; }         public static Color ForeColorDark { get; set; }         public static Color TextColor { get; set; }         public static System.Drawing.Font Font { get; set; }          public static Excel.Application ExcelApp { get; set; }         public static Double ExcelVersion { get; set; }          static LFTheme()         {             InitLook();         }        public static void InitLook()             {                 const string OfficeCommonKey = @"Software\Microsoft\Office\{0:0.0}\Common";                 const string OfficeThemeValueName = "Theme";                  Theme = 0;                 BackColor = System.Windows.Forms.Control.DefaultBackColor;                 ForeColor = System.Drawing.SystemColors.Control;                 ForeColorLight = System.Drawing.SystemColors.ControlLight;                 ForeColorDark = System.Drawing.SystemColors.ControlDark;                 TextColor = System.Drawing.SystemColors.ControlText;                 Font = System.Windows.Forms.Control.DefaultFont;                  if (ExcelVersion<12.0)                     return;                  using (RegistryKey key = Registry.CurrentUser.OpenSubKey(String.Format(OfficeCommonKey, ExcelVersion), false))                 {                     try                     {                         Theme = (int)key.GetValue(OfficeThemeValueName);                     }                     catch (Exception ex)                     {                         Theme = ThemeClassic;                         if (ExcelVersion >= 12.0)                         {                             Theme = ThemeBlue;                         }                     }                      switch (Theme)                     {                         case ThemeBlue:                             BackColor = Color.FromArgb(255, 213, 228, 242);                             ForeColor = Color.FromArgb(255, 107, 160, 209);                             ForeColorLight = Color.FromArgb(255, 185, 210, 234);                             ForeColorDark = Color.FromArgb(255, 87, 149, 204);                             TextColor = Color.FromArgb(255, 50, 108, 160);                             Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));                             break;                          case ThemeSilver:                             BackColor = Color.FromArgb(255, 232, 236, 243);                             ForeColor = Color.FromArgb(255, 158, 162, 161);                             ForeColorLight = Color.FromArgb(255, 200, 206, 205);                             ForeColorDark = Color.FromArgb(255, 128, 133, 131);                             TextColor = Color.FromArgb(255, 116, 118, 123);                             Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));                             break;                          case ThemeBlack:                             BackColor = Color.FromArgb(255, 83, 83, 83);                             ForeColor = Color.FromArgb(255, 168, 170, 170);                             ForeColorLight = Color.FromArgb(255, 188, 190, 190);                             ForeColorDark = Color.FromArgb(255, 148, 150, 150);                             TextColor = Color.FromArgb(255, 224, 226, 226);                             Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));                             break;                          default:                                                 break;                     }                 }             }   } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!