Границы и затенение
Границы и заливка
Форматирование границ и заливки в Aspose.Words FOSS для .NET моделируется двумя связанными классами атрибутов: Border, который описывает одну линию границы, и Shading, который описывает шаблон фоновой заливки. Параграфы, таблицы, ячейки и шрифты каждый предоставляют BorderCollection (множество сторон Border) и отдельный объект Shading через соответствующие свойства форматирования.
Работа с отдельными границами
Объект Border представляет одну линию границы и предоставляет LineStyle (значение перечисления из LineStyle, например Single, Double, Dot или Wave), LineWidth, Color, DistanceFromText, Shadow и свойства, учитывающие тему, ThemeColor/TintAndShade. Вызовите ClearFormatting() на Border, чтобы сбросить его к значению по умолчанию (без границы).
BorderCollection группирует несколько объектов Border для сторон объекта. Он предоставляет именованные свойства для четырёх краёв — Left, Right, Top, Bottom — а также Horizontal и Vertical для внутренних границ таблицы. Индексатор BorderCollection получает конкретную сторону, используя значение перечисления BorderType (Left, Right, Top, Bottom, Horizontal, Vertical, DiagonalDown, DiagonalUp или None) в качестве ключа. Установка LineWidth, LineStyle или Color непосредственно в коллекцию применяет это значение ко всем границам, которые она содержит, сразу; ClearFormatting() очищает все границы в коллекции одновременно.
Применение заливки
Shading содержит фоновой шаблон для объекта: BackgroundPatternColor и ForegroundPatternColor определяют два цвета шаблона, а Texture (значение перечисления TextureIndex) выбирает шаблон — сплошные заливки используют TextureIndex.TextureSolid, тогда как процентные и направленные шаблоны (Texture10Percent-Texture97Pt5Percent, TextureHorizontal, TextureDiagonalCross и другие) воспроизводят галерею затенения Word. ForegroundPatternThemeColor и BackgroundPatternThemeColor предоставляют эквиваленты цветовой темы, а также регулировку тона/оттенка через ForegroundTintAndShade и BackgroundTintAndShade. ClearFormatting() сбрасывает объект Shading к отсутствию заливки.
Советы и лучшие практики
- Установите
Textureв значениеTextureIndex.TextureSolidи используйтеBackgroundPatternColorдля сплошного заполнения фона — самый распространённый случай затенения. - Используйте индексатор
BorderCollection(borders[BorderType.Horizontal]/borders[BorderType.Vertical]), чтобы получить доступ к внутренним линиям сетки таблицы, которые не представлены именованными свойствами. - Установка свойств непосредственно на
BorderCollection(а не на отдельныйLeft/Right/Top/BottomBorder) — самый быстрый способ применить одинаковые границы ко всем сторонам. - Помните, что
LineStyle.Noneудаляет видимую линию, не очищая остальные настроенные ширину или цвет границы — используйтеClearFormatting()для полного сброса. - Границы ячеек таблицы и абзацев являются независимыми экземплярами
BorderCollection; установка одной не влияет на другую.
Распространённые проблемы
| Проблема | Причина | Решение |
|---|---|---|
Граница не видна после установки Color | LineStyle оставлен(а) на LineStyle.None | Установите LineStyle в видимый стиль, например Single, перед сохранением |
| Затенение отображается как сплошная заливка, когда ожидался узор | Texture оставлен(а) по умолчанию | Явно установить Texture в желаемую константу шаблона |
| Внутренние границы таблицы не меняются при изменении границы краёв | Horizontal/Vertical отделены от Left/Right/Top/Bottom | Установите BorderCollection.Horizontal и .Vertical явно |
Индексатор BorderCollection возвращает неожиданную границу | Передано неверное значение BorderType | Убедитесь, что значение перечисления BorderType соответствует нужной стороне |
FAQ
Как применить одинаковую границу ко всем четырём сторонам ячейки таблицы?
Установите LineStyle, LineWidth и Color непосредственно на BorderCollection ячейки, а не на каждый из Left, Right, Top и Bottom отдельно — сеттеры уровня коллекции применяются ко всем границам, которые она содержит.
В чём разница между Border и Shading?
Border описывает линию (стиль, ширина, цвет), проведённую вдоль края; Shading описывает шаблон заливки фоном за содержимым. Они независимы — объект может иметь затенение без границ или границы без затенения.
Какой enum управляет визуальным рисунком линии границы?
LineStyle, со значениями, такими как Single, Double, Dot, DashSmallGap и Wave.
Можно ли полностью удалить границу?
Да — вызовите ClearFormatting() на Border или BorderCollection, либо установите LineStyle в значение LineStyle.None.
API Reference Сводка
| Класс / Метод | Описание: |
|---|---|
Border | Одна линия границы: стиль, ширина, цвет, тень |
BorderCollection | Набор границ (Left, Right, Top, Bottom, Horizontal, Vertical) для объекта |
BorderType | Перечисление, определяющее сторону границы |
LineStyle | Перечисление визуальных стилей линий (Single, Double, Dot и т.д.) |
Shading | Заполнение фона узором: цвета и Texture |
TextureIndex | Перечисление текстур шаблонов затенения |