Silverlight - Epic Graphical Fail(矩形由两个三角形组成):(

时间:2011-01-31 16:35:49

标签: silverlight graphics

我想用两个三角形绘制矩形。非常简单的任务。但是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>

逻辑上我编译这段代码时必须看到一个矩形。如果您尝试使用此代码,您将看到矩形,但您将在其中有一条白色的白线......

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

3 个答案:

答案 0 :(得分: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>

这样你就可以用一个三角形合成一个单独的元素Path。您展示的方式会创建单独的元素,每个元素都将单独消除锯齿。

希望有所帮助。

塞尔吉奥

答案 1 :(得分:2)

您是否检查了StrokeStrokeThickness属性?我不确定它们是否具有默认值,允许您绘制三角形之间没有任何空格的矩形。

<强>更新 这对你有帮助吗?

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

答案 2 :(得分: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>