Rahmen und Schattierung
Ränder und Schattierung
Die Rahmen- und Schattierungsformatierung in Aspose.Words FOSS für .NET wird durch zwei verwandte Attributklassen modelliert: Border, die eine einzelne Rahmenlinie beschreibt, und Shading, die ein Hintergrundfüllmuster beschreibt. Absätze, Tabellen, Zellen und Schriftarten stellen jeweils ein BorderCollection (mehrere Border Seiten) und ein einzelnes Shading-Objekt über ihre jeweiligen Formatierungseigenschaften bereit.
Arbeiten mit einzelnen Rahmen
Ein Border-Objekt stellt eine Rahmenlinie dar und stellt LineStyle (einen Enum-Wert aus LineStyle, z.B. Single, Double, Dot oder Wave), LineWidth, Color, DistanceFromText, Shadow sowie themenabhängige ThemeColor/TintAndShade-Eigenschaften bereit. Rufen Sie ClearFormatting() auf einem Border auf, um ihn auf den Standardzustand (kein Rahmen) zurückzusetzen.
BorderCollection gruppiert mehrere Border-Objekte für die Seiten eines Objekts. Es stellt benannte Eigenschaften für die vier Kanten – Left, Right, Top, Bottom – sowie Horizontal und Vertical für innere Tabellenrahmen bereit. Der BorderCollection-Indexer ruft eine bestimmte Seite mit einem BorderType-Enum-Wert (Left, Right, Top, Bottom, Horizontal, Vertical, DiagonalDown, DiagonalUp oder None) als Schlüssel ab. Das Setzen von LineWidth, LineStyle oder Color direkt auf der Sammlung wendet diesen Wert gleichzeitig auf alle enthaltenen Rahmen an; ClearFormatting() löscht alle Rahmen in der Sammlung zusammen.
Schattierung anwenden
Shading enthält das Hintergrundmuster für ein Objekt: BackgroundPatternColor und ForegroundPatternColor definieren die beiden Musterfarben, und Texture (ein TextureIndex-Enum-Wert) wählt das Muster aus – feste Füllungen verwenden TextureIndex.TextureSolid, während Prozent- und Richtungsmuster (Texture10Percent bis Texture97Pt5Percent, TextureHorizontal, TextureDiagonalCross und weitere) die Word-Schattierungsgalerie nachbilden. ForegroundPatternThemeColor und BackgroundPatternThemeColor bieten themenfarbene Entsprechungen, zusammen mit Tint-/Shade-Anpassungen über ForegroundTintAndShade und BackgroundTintAndShade. ClearFormatting() setzt ein Shading-Objekt auf keine Füllung zurück.
Tipps und bewährte Verfahren
- Setze
TextureaufTextureIndex.TextureSolidund verwendeBackgroundPatternColorfür eine einfarbige Hintergrundfüllung — der häufigste Schattierungsfall. - Verwende den
BorderCollectionIndexer (borders[BorderType.Horizontal]/borders[BorderType.Vertical]), um die inneren Gitternetzlinien einer Tabelle zu erreichen, die nicht als benannte Eigenschaften bereitgestellt werden. - Das Setzen von Eigenschaften direkt auf einem
BorderCollection(statt auf einem einzelnenLeft/Right/Top/BottomBorder) ist der schnellste Weg, einheitliche Rahmen an allen Seiten anzuwenden. - Denke daran, dass
LineStyle.Nonedie sichtbare Linie entfernt, ohne die restliche konfigurierte Breite oder Farbe des Rahmens zu löschen — verwendeClearFormatting()für einen vollständigen Reset. - Tabellenzellen- und Absatzrahmen sind unabhängige
BorderCollection-Instanzen; das Setzen des einen beeinflusst das andere nicht.
Häufige Probleme
| Problem | Ursache | Behebung |
|---|---|---|
Rand nicht sichtbar nach dem Setzen von Color | LineStyle verbleibt bei LineStyle.None | Setze LineStyle auf einen sichtbaren Stil wie Single vor dem Speichern |
| Schattierung erscheint als Vollfüllung, obwohl ein Muster erwartet wurde | Texture verbleibt beim Standard | Setzen Sie Texture explizit auf die gewünschte Musterkonstante |
| Innere Tabellenränder bleiben von Änderungen der Randränder unberührt | Horizontal/Vertical sind getrennt von Left/Right/Top/Bottom | Setze BorderCollection.Horizontal und .Vertical explizit |
Der BorderCollection-Indexer liefert einen unerwarteten Rand | Falscher BorderType-Wert übergeben | Stellen Sie sicher, dass der BorderType-Enum-Wert der beabsichtigten Seite entspricht |
FAQ
Wie wende ich denselben Rahmen auf alle vier Seiten einer Tabellenzelle an?
Setze LineStyle, LineWidth und Color direkt auf das BorderCollection der Zelle, anstatt sie einzeln auf jedes der Left, Right, Top und Bottom anzuwenden — die Setter auf Sammlungsebene gelten für jeden enthaltenen Rahmen.
Was ist der Unterschied zwischen Border und Shading?
Border beschreibt eine Linie (Stil, Breite, Farbe), die entlang einer Kante gezeichnet wird; Shading beschreibt ein Hintergrundfüllmuster hinter dem Inhalt. Sie sind unabhängig — ein Objekt kann Schattierung ohne Rahmen haben oder Rahmen ohne Schattierung.
Welches Enum steuert das visuelle Linienmuster eines Rahmens?
LineStyle, mit Werten wie Single, Double, Dot, DashSmallGap und Wave.
Kann ich einen Rahmen vollständig entfernen?
Ja — rufe ClearFormatting() auf dem Border oder BorderCollection auf, oder setze LineStyle auf LineStyle.None.
API Reference Zusammenfassung
| Klasse / Methode | Beschreibung |
|---|---|
Border | Eine einzelne Randlinie: Stil, Breite, Farbe, Schatten |
BorderCollection | Die Menge der Ränder (Left, Right, Top, Bottom, Horizontal, Vertical) für ein Objekt |
BorderType | Enum zur Identifizierung einer Randseite |
LineStyle | Enum der visuellen Linienstile (Single, Double, Dot, usw.) |
Shading | Hintergrundmusterfüllung: Farben und Texture |
TextureIndex | Enum der Schattierungsmuster-Texturen |