首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF 文字修飾完全指南:上劃線、中劃線、下劃線與基線

     編輯:關於.NET

前言

WPF 提供強大的 TextDecorations 機制,讓開發者輕鬆實現上劃線、刪除線 (中劃線)、下劃線與基線等文字裝飾,並支援顏色、粗細、虛線、漸層筆刷等進階樣式。本文從基本屬性設定到複雜 Pen 自訂,完整示範各種效果實作。

基本用法:TextDecorations 列舉值

TextBlock、TextElement 等均擁有 TextDecorations 屬性,可設定為:

  • OverLine:上劃線
  • Strikethrough:中劃線 (刪除線)
  • Baseline:基線
  • Underline:下劃線 (預設超連結樣式)
  • None:無裝飾 (預設)

XAML 範例

<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
    <TextBlock TextDecorations="Strikethrough" FontSize="72" FontFamily="Arial">A</TextBlock>
</Page>

C# 程式碼設定

private void SetDefaultStrikethrough() {
    textBlock1.TextDecorations = TextDecorations.Strikethrough;
}

進階樣式:自訂 Pen (顏色、粗細、虛線、漸層)

透過 TextDecoration 物件的 Pen、PenOffset、PenThicknessUnit 等屬性,可精確控制裝飾線外觀。

XAML 完整範例:漸層虛線下劃線

<Page xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
    <Canvas>
        <TextBlock FontSize="84" FontFamily="Arial Black" Margin="0,0">
            <TextBlock.TextDecorations>
                <TextDecoration PenOffset="10" PenOffsetUnit="Pixel" PenThicknessUnit="Pixel">
                    <TextDecoration.Pen>
                        <Pen Thickness="5">
                            <Pen.Brush>
                                <LinearGradientBrush Opacity="0.8" StartPoint="0,0.5" EndPoint="1,0.5">
                                    <LinearGradientBrush.GradientStops>
                                        <GradientStop Color="Yellow" Offset="0" />
                                        <GradientStop Color="Red" Offset="1" />
                                    </LinearGradientBrush.GradientStops>
                                </LinearGradientBrush>
                            </Pen.Brush>
                            <Pen.DashStyle>
                                <DashStyle Dashes="1,2,3"/>
                            </Pen.DashStyle>
                        </Pen>
                    </TextDecoration.Pen>
                </TextDecoration>
            </TextBlock.TextDecorations>
            GOOD
        </TextBlock>
    </Canvas>
</Page>

C# 關鍵程式碼

private void SetLinearGradientUnderline() {
    TextDecoration myUnderline = new TextDecoration();
    Pen myPen = new Pen();
    myPen.Brush = new LinearGradientBrush(Colors.Yellow, Colors.Red, new Point(0, 0.5), new Point(1, 0.5));
    myPen.Brush.Opacity = 0.8;
    myPen.Thickness = 5;
    myPen.DashStyle = DashStyles.Dash;
    myUnderline.Pen = myPen;
    myUnderline.PenThicknessUnit = TextDecorationUnit.FontRecommended;
    TextDecorationCollection myCollection = new TextDecorationCollection();
    myCollection.Add(myUnderline);
    textBlockGood.TextDecorations = myCollection;
}

延伸思考:同時繪製多種裝飾線 (如文武線)

TextDecorations 屬性接受 TextDecorationCollection,因此可在同一 TextBlock 上同時加入 OverLine、Strikethrough、Underline 甚至自訂 Baseline,實現複雜排版效果 (如文武線)。具體實作留給讀者嘗試:建立包含多個 TextDecoration 的集合指派給 TextBlock.TextDecorations 即可。

總結

WPF 的文字裝飾系統極具彈性:簡單場景直接用列舉值,複雜樣式則透過 TextDecoration + Pen 實現漸層、虛線、偏移等效果。善用 TextDecorationCollection 更可疊加多種裝飾,滿足專業排版需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved