Silverlight - эпическая графическая ошибка (прямоугольник с двумя треугольниками) :( - PullRequest
2 голосов
/ 31 января 2011

Я хочу нарисовать прямоугольник двумя треугольниками. Очень простая задача Но 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 ]

3 голосов
/ 05 февраля 2011

Это немного многословно в 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 голосов
/ 31 января 2011

Вы проверили Stroke и StrokeThickness свойства? Я не уверен, что они имеют значения по умолчанию, которые позволят вам нарисовать прямоугольник без пробелов между ними.

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>
1 голос
/ 31 января 2011

Добавьте .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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...