Границы и затенение

Границы и затенение

Границы и заливка

Форматирование границ и заливки в 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/Bottom Border) — самый быстрый способ применить одинаковые границы ко всем сторонам.
  • Помните, что LineStyle.None удаляет видимую линию, не очищая остальные настроенные ширину или цвет границы — используйте ClearFormatting() для полного сброса.
  • Границы ячеек таблицы и абзацев являются независимыми экземплярами BorderCollection; установка одной не влияет на другую.

Распространённые проблемы

ПроблемаПричинаРешение
Граница не видна после установки ColorLineStyle оставлен(а) на 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Перечисление текстур шаблонов затенения

См. также:

 Русский