2011-01-31 76 views
2

我想通过两个三角形非常简单的任务来绘制矩形,但是Silverlight可以不处理它Silverlight的 - 。史诗图形失败(由两个三角形矩形):(

<Grid x:Name="LayoutRoot" UseLayoutRounding="False" Background="White"> 
    <Polygon Fill="Black"> 
     <Polygon.Points> 
      <Point X="10" Y="100"/> 
      <Point X="100" Y="10"/> 
      <Point X="100" Y="100"/> 
     </Polygon.Points> 
    </Polygon> 
    <Polygon Fill="Black"> 
     <Polygon.Points> 
      <Point X="10" Y="10"/> 
      <Point X="100" Y="10"/> 
      <Point X="10" Y="100"/> 
     </Polygon.Points> 
    </Polygon> 

</Grid> 

Logicly我还得看矩形当我编译这个代码。如果你尝试使用这个代码,你会看到矩形,但你会有一个annoing白线在它...

所以我想知道..有没有办法绘制矩形(看起来像矩形)由Silverlight中的两个三角形组成?

回答

3

这是在XAML有点冗长,但如果你编程创建三角形它不应该的问题,怎么样像这样:

<Canvas Background="#FFF9B15A" Width="200" Height="110" VerticalAlignment="Top" HorizontalAlignment="Left"> 
    <Path Fill="Black" StrokeThickness="0"> 
     <Path.Data> 
      <GeometryGroup> 
       <PathGeometry> 
        <PathGeometry.Figures> 
         <PathFigureCollection> 
          <PathFigure IsClosed="True" StartPoint="10,10"> 
           <PathFigure.Segments> 
            <PathSegmentCollection> 
             <LineSegment Point="100,10" /> 
             <LineSegment Point="10, 100" /> 
            </PathSegmentCollection> 
           </PathFigure.Segments> 
          </PathFigure> 
         </PathFigureCollection> 
        </PathGeometry.Figures> 
       </PathGeometry> 
       <PathGeometry> 
        <PathGeometry.Figures> 
         <PathFigureCollection> 
          <PathFigure IsClosed="True" StartPoint="10,100"> 
           <PathFigure.Segments> 
            <PathSegmentCollection> 
             <LineSegment Point="100,10" /> 
             <LineSegment Point="100, 100" /> 
            </PathSegmentCollection> 
           </PathFigure.Segments> 
          </PathFigure> 
         </PathFigureCollection> 
        </PathGeometry.Figures> 
       </PathGeometry> 
      </GeometryGroup> 
     </Path.Data>  
    </Path> 
</Canvas> 

这样,你真的合成一个单一的元素,路径,三角形。你显示的方式创建了单独的元素,每个元素都将被单独消除锯齿。

希望有所帮助。

Sergio

2

你是否检查过StrokeStrokeThickness属性?我不确定它们是否具有默认值,这将允许您在三角形之间没有任何空间的情况下绘制矩形。

UPDATE 这会帮助你吗?

<Grid x:Name="LayoutRoot" UseLayoutRounding="False" Background="White"> 
    <Polygon Fill="Black" Stroke="Black"> 
     <Polygon.Points> 
      <Point X="10" Y="100"/> 
      <Point X="100" Y="10"/> 
      <Point X="100" Y="100"/> 
     </Polygon.Points> 
    </Polygon> 
    <Polygon Fill="Black" Stroke="Black"> 
     <Polygon.Points> 
      <Point X="10" Y="10"/> 
      <Point X="10" Y="100"/> 
      <Point X="100" Y="10"/> 
     </Polygon.Points> 
    </Polygon> 
</Grid> 
+0

您是否在此代码中看到过我设置了Stroke或StrokeThickness?那么这意味着我使用这个属性的默认值。只是试试这个代码.. – 2011-01-31 18:15:47

+0

@Ai_boy:更新回答 – Snowbear 2011-02-01 13:20:04

+0

它有帮助,但这不是我所期待的。我不想使用Stroke属性... – 2011-02-01 20:06:42

1

将.5添加到连接侧的点上。 Silverlight关于边缘有点奇怪。看看矩形的边缘,看它们是灰色还是纯黑色。你可能不得不调整一些.5's来解决这个问题。

<Grid x:Name="LayoutRoot" UseLayoutRounding="False" Background="White"> 
    <Polygon Fill="Black"> 
     <Polygon.Points> 
      <Point X="10" Y="100"/> 
      <Point X="100" Y="10"/> 
      <Point X="100" Y="100"/> 
     </Polygon.Points> 
    </Polygon> 
    <Polygon Fill="Black"> 
     <Polygon.Points> 
      <Point X="10" Y="10"/> 
      <Point X="100.5" Y="10.5"/> 
      <Point X="10.5" Y="100.5"/> 
     </Polygon.Points> 
    </Polygon> 

</Grid>