Как заставить 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
и получите больший текст, который вы хотите.