2012-03-09 51 views
2

我试图创建一个在wpf中看起来像这样的行。行填充和描边

任何人都有任何想法如何做到这一点?我需要绑定x和y坐标,所以一条线非常好,除非我不能让它看起来像这样。

imgur link

Line with outline and fill

回答

6

你不能用简单的线条做到这一点,但有一个Border对象时,它是很容易的。

<Border Width="100" Height="10" Background="#FFFFDAAD" BorderBrush="Orange" BorderThickness="0,3"/> 
+0

是的,它看起来像我可以拿到以后再看我,但我真的需要绑定到X1,X2,Y1,Y2喜欢就行。 – DTig 2012-03-10 19:42:57

+0

您可以将x1绑定到Canvas.Left,将y1绑定到边框的Canvas.Top。对于x2和y2,您需要实现ValueConverter以将x1,x2更改为Width,将y1,y2更改为Height。 – Stewbob 2012-03-12 18:23:48

1

您可以覆盖多个直线,折线或多边形,以实现类似的效果,并利用资源,避免重复,例如(只是灵感):

<Canvas ClipToBounds="True" Height="200" Width="200"> 
    <Canvas.Resources> 
     <PointCollection x:Key="Wings">0,-2 62,-2 62,22 58,22 58,2 0,2</PointCollection> 
    </Canvas.Resources> 
    <Polygon Points="{StaticResource Wings}" Fill="Black" Stroke="White" StrokeThickness="4"/> 
    <Polygon Points="{StaticResource Wings}" StrokeThickness="8" Stroke="White"/> 
    <Polygon Points="{StaticResource Wings}" StrokeThickness="4" Stroke="Red"/> 
</Canvas> 
1

我有最好的解决办法,使对“纲要“行StrokeThickness超过‘简单’行:

 <Line x:Name="borderLine" X1="0" X2="400" Y1="0" Y2="0" StrokeThickness="1" Stroke="White"/> 
     <Line x:Name="borderOutlineLine" X1="0" X2="400" Y1="0" Y2="0" StrokeThickness="0.3" Stroke="Black"/>