Как задать в всплывающих подсказках жирный шрифт?
Вопрос: Недавно на форуме мне задали вопрос о том как можно управлять шрифтом в окне всплывающих подсказок при наведении курсора на примитив?
Ответ: Я начал исследование с этой статьи: https://adndevblog.typepad.com/autocad/2013/03/formatting-in-rollover-tip.html
При анализе её вскрылись некоторые интересные моменты. AutoCAD использует WPF (а точнее XAML) для показа таких всплывающих подсказок. В тексте подсказок можно использовать встроенные теги: <Bold> (для жирного шрифта), <Italic> (для наклонного шрифта), <Underline> (подчеркнутый шрифт) и <Hyperlink> (гиперссылка). Но не всё так просто. AutoCAD использует конструкцию вида:
Всё что внутри <![CDATA[]]>интерпретируется как обычный текст и встроенные теги игнорируются. Поэтому требуется некоторая хитрость. А именно, сначала мы закрываем тег <![CDATA[]]>, а затем уже применяем встроенные теги для управления форматом шрифта. В реакторе AcEdInputPointMonitor / AcEdInputPointFilter это будет выглядеть приблизительно так:
- Acad::ErrorStatus ToolTipsFilter::processInputPoint(const AcEdInputPoint& input,
- AcEdInputPointFilterResult& output) {
- if (input.pickedEntities().length() > 0) {
- output.setNewTooltipString(
- L"]]>" // <----- Обязательное начало
- L"Обычный текст"
- L"<LineBreak/>"
- L"<Bold>Жирный текст</Bold>"
- L"<LineBreak/>"
- L"<Italic>Наклонный текст</Italic>"
- L"<LineBreak/>"
- L"<Underline>Подчеркнутый текст</Underline>"
- L"<LineBreak/>"
- L"<Underline><Italic>Подчеркнутый наклонный текст</Italic></Underline>"
- L"<LineBreak/>"
- L"<Bold><Italic>Жирный наклонный текст</Italic></Bold>"
- L"<LineBreak/>"
- L"<Bold><Underline><Italic>Жирный подчеркнутый наклонный текст</Italic></Underline></Bold>"
- L"<LineBreak/>"
- L"<Hyperlink NavigateUri = \"https://adn-cis.org\">"
- L"Гиперсылка"
- L"</Hyperlink>"
- L"<![CDATA[" // <----- Обязательный конец
- );
- }
- else output.setNewTooltipString(L"");
- return (Acad::eOk);
- }
Аналогично можно сделать и в .NET в PointMonitor и в PointFilter.
И результат будет таким:
Опубликовано 20.05.2020