Dot-Net
如何在 WPF 中繪製“軟”線(可能使用 LinearGradientBrush)?
無論坡度如何,我都試圖畫一條邊緣柔軟的線。
這是我到目前為止的程式碼:
<Line HorizontalAlignment="Stretch" VerticalAlignment="Center" Stretch="Uniform" StrokeThickness="5" X1="0" Y1="0" X2="1" Y2="0"> <Shape.Stroke> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="Transparent" Offset="0" /> <GradientStop Color="Green" Offset="0.5" /> <GradientStop Color="Transparent" Offset="1" /> </LinearGradientBrush> </Shape.Stroke> </Line>這對我來說很有意義,因為線是水平的,而線性漸變是垂直的,邊緣是透明的,而線的中間是純綠色。
結果令人愉悅: 放大後可以看到漸變: http://img225.imageshack.us/img225/5027/horizo ntalsoftlinezoomeb.png
但是,當線條不再水平時,梯度是基於線條的邊界矩形計算的,而不是線條本身的幾何形狀。結果是一條垂直著色的斜線,而不是垂直於該線的漸變:
有誰知道 WPF 如何處理軟邊緣?我在 Google 或 MSDN 上找不到任何東西,而且我知道有辦法以某種方式做到這一點……
好吧,我不知道這是否適用於你的場景,但你可以簡單地使用 LayoutTransform 旋轉水平線,漸變就可以了。
<Line HorizontalAlignment="Stretch" VerticalAlignment="Center" Stretch="Uniform" StrokeThickness="5" X1="0" Y1="0" X2="1" Y2="0"> <Shape.Stroke> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <GradientStop Color="Transparent" Offset="0" /> <GradientStop Color="Green" Offset="0.5" /> <GradientStop Color="Transparent" Offset="1" /> </LinearGradientBrush> </Shape.Stroke> <Line.LayoutTransform> <RotateTransform Angle="40"/> </Line.LayoutTransform>

