RTF - Коробка вокруг слова?

В RTF можно ли сделать так, чтобы слово появлялось в рамке вокруг него? Я не уверен, что Table правильный выбор, потому что я не хочу проблем с выравниванием.

  • высота строки должна быть такой же, как у обычного текста
  • цвет для границы
  • должен вести себя как обычный текст

(не имеет значения, но я работаю на C# с RTF)


person Bitterblue    schedule 03.07.2013    source источник
comment
Возможный дубликат: stackoverflow.com/questions/6158291/   -  person ToastyMallows    schedule 03.07.2013
comment
@ToastyMallows Это совсем другой путь. Я ищу решение RTF. Я не рисую, я манипулирую строками RTF-кода.   -  person Bitterblue    schedule 03.07.2013


Ответы (1)


Вы можете поместить границы вокруг текста и абзацев в RTF, как показано в следующем простом примере RTF.

{\rtf1
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red255\green0\blue0;\red0\green255\blue0;}
\pard\plain
\brdrt\brdrs\brdrw10\brsp20\brdrcf2 
\brdrl\brdrs\brdrw10\brsp80 
\brdrb\brdrs\brdrw10\brsp20 
\brdrr\brdrs\brdrw10\brsp80  
Hello 
{\chbrdr\brdrs\brdrw10\brsp20\brdrcf3 World}
}

Чтобы выделить одно слово, начните с ключевого слова \chrbrdr (это применяет границы ко всем сторонам, вы не можете иметь разные границы с каждой стороны для текста, но можете для абзацев). Затем стиль границы изменяется с помощью следующих ключевых слов.

\brdrs - задает границу одинарной толщины. Существует множество альтернативных стилей границ, таких как двойное, тире, точка-тире и т. д. См. спецификация RTF

\brdrw10 — задает ширину границы в твипах (твип — это двадцатая часть пункта). Здесь до 10 твипов

\brsp20 — задает отделение границы от текста, опять же в твипах — здесь выставлено 20 твипов. Обратите внимание, что слишком большое значение этого параметра может повлиять на межстрочный интервал.

brdrcf3 - задает цвет границы по индексу в таблице цветов.

Как вы можете видеть в примере, вы заканчиваете выделение границы слова, ограничивая выделение парой {}.

В примере RTF также показана граница абзаца, где можно задать стиль для верхней, нижней, левой и правой границ отдельно.

Возможно, что некоторые программы просмотра RTF могут не отображать границы текста и/или абзаца. Пример выше правильно отображается для меня в Microsoft Word (2013), но я действительно не могу найти способ редактировать границу слова в пользовательском интерфейсе Word. Редактирование границы абзаца доступно в диалоговом окне «Форматирование абзаца».

person RobinG    schedule 03.07.2013
comment
Я не могу заставить вас работать с образцом. Я использую RichTextBox из С#. Он может отображать таблицы. И я не уверен, что это то же самое, что и ваш образец. Мне не нужны таблицы, но я хочу, чтобы текст был окружен рамкой. - person Bitterblue; 03.07.2013
comment
Ах, хорошо, я не знал, что вы используете RichTextBox - думал, что вы создаете RTF, используя C # для отображения в Word или аналогичном (пример выглядит правильно в Word). Похоже, RichTextBox не поддерживает отображение границ абзаца или текста, как это должно быть сделано в RTF. Я не могу сейчас придумать другого способа сделать это в RTF — таблицы будут мешать потоку документа (они всегда одни в строке). Некоторые идеи: * Перейдите с RTF на HTML - должно быть легко поставить границу на ‹span› * Попробуйте альтернативный контроль RTF (разные компании продают за $$$) - person RobinG; 03.07.2013
comment
Можете ли вы предоставить небольшой скриншот того, что вы видите в слове? Или дайте подсказку, как я могу заставить слово интерпретировать RTF-код? - person Bitterblue; 03.07.2013
comment
Не знаю, как вставить сюда снимок экрана, но чтобы перевести RTF в слово, сделайте следующее: Откройте блокнот, вставьте скопированный сверху код RTF в блокнот, Файл->Сохранить как, назовите файл 'test.rtf'. Проверьте, действительно ли файл «test.rtf», а не «test.rtf.txt», и при необходимости переименуйте его. Откройте «test.rtf» в Word. - person RobinG; 03.07.2013