2011-01-31 5 views
2

私は2つの三角形で四角形を描画したい非常に簡単な作業しかし、Silverlightは、それを扱うことができないシルバー - 。。。Logicly私が見にエピックグラフィカル失敗(二つの三角形によって長方形):(

<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> 

を持っています私はこのコードをコンパイルするときに長方形です。このコードを使用しようとすると、四角形が表示されますが、白い線が表示されます...

私は知っている..矩形を描画する方法はありますかSilverlightで2つの三角形で四角形のように見えますか?

答えて

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> 

あなたが本当に合成している。この方法単一の要素、パス、三角形。表示された方法では、別々の要素が作成され、それぞれ別々にアンチエイリアス処理されます。

希望に役立ちます。

セルジオ

+0

これは私が探しているものです。:) tnxたくさん –

2

012をチェックしましたかとStrokeThicknessのプロパティ?私は三角形の間にスペースを入れずに四角形を描くことを可能にするデフォルト値を持っているかどうかはわかりません。

更新 これはあなたを助けますか?

<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

あなたは私が脳卒中またはStrokeThicknessを設定し、このコードでは見ましたか?次に、私はこのプロパティの既定値を使用することを意味します。 –

+0

@Ai_boy:更新された回答 – Snowbear

+0

これは役に立ちますが、これは私が探しているものではありません。私はストロークプロパティを使用したくない... –

1

接続側のポイントに.5を追加します。 Silverlightはエッジについて少し嫌です。矩形の端を見て、灰色か黒いかどうかを確認します。 .5を調整しなければならないかもしれません。

<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> 
+0

hmmm ...そして、もし私がコードからそれらの三角形を作成する場合、0.5をどこに追加するかを教えてもらえますか? –

+0

@Ai_boyあなたはレンダリングエンジンを書いていますか? –

+0

はい.. 2D-3Dエンジンですが、レンダラとしてSilverlightを使用しています... –

関連する問題