Как заставить Windows Ribbon Framework соблюдать размер шрифта пользователя?

Лента команды Office 2007/2010 учитывает размер шрифта пользователя (меню).

Лента Windows Ribbon Framework (используемая MS Paint и моим приложением) игнорирует пользовательские (то есть мои) настройки шрифта.

Снимок экрана:

  • Excel 2010
  • MS Paint (WRF)
  • Моя заявка (WRF)

Как получить ленту Windows Ribbon Framework, учитывающую размер шрифта пользователя?

Бонус Болтовня

Не существует единого "шрифта Windows". Пользователь может настроить шесть разных шрифтов:

  • Шрифт заголовка иконки
  • Статусный шрифт
  • Шрифт сообщения
  • Шрифт меню
  • Шрифт заголовка
  • Шрифт Small Caption

На ленте команды Office используется шрифт " Меню", что имеет смысл, поскольку лента - это меню. Вы можете получить шрифт Меню, используя:

//Win32
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, ref nonClientMetrics, 0); 
nonClientMetrics.lfMenuFont;

//.NET
SystemFonts.MenuFont;

//Delphi
TScreen.MenuFont

Цвет ленты:

По умолчанию лента не соответствует цветовой схеме пользователя (обратите внимание на мои скриншоты синюю ленту с моим коричневым стеклянным цветом). Существует API для изменения цвета ленты, как вы можете видеть на 3-й ленте (той, которая размещена в моем приложении).

//change ribbon background color
IPropertyStore(framework).SetValue(UI_PKEY_GlobalBackgroundColor, glassColor);

//change ribbon font color
IPropertyStore(framework).SetValue(UI_PKEY_GlobalTextColor, Color.Black);    

Бонус Чтение

  • Windows Ribbon Framework: Как изменить шрифт и размер шрифта? (Этот вопрос был о том, как установить произвольную грань и размер шрифта - который можно использовать для соблюдения предпочтений шрифта Windows пользователя. Этот вопрос касается указания самой ленте соблюдать предпочтения шрифта пользователя, но при этом не может указать произвольный размер шрифта / размер)

1 ответ

Это старый вопрос, но есть FontSize свойство доступно для ленты Windows WPF: http://www.microsoft.com/en-us/download/details.aspx?id=11877

Вы можете привязать этот атрибут к функции, которая возвращает SystemFonts.MenuFontSize и получите больший текст, который вы хотите.

Другие вопросы по тегам