14

勾配に関係なく、ソフトエッジで線を引こうとしています。

これまでのコードは次のとおりです。

<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 では何も見つかりませんが、何らかの方法でこれを行う方法があることは知っています...

4

4 に答える 4

2

線の代わりに形を使ってみてください

<Path Data="M0,0 L25,25 z" Fill="#FFF4F4F5" StrokeThickness="5" Canvas.Left="122" Canvas.Top="58">
<Path.Stroke>
    <LinearGradientBrush EndPoint="1.135,0.994" StartPoint="-0.177,-0.077">
        <GradientStop Color="Black"/>
        <GradientStop Color="#FF68A8FF" Offset="1"/>
    </LinearGradientBrush>
</Path.Stroke>

トマー

于 2011-03-08T09:21:50.120 に答える