Difference between EvenOdd FillRule and NonZero FillRule

image_pdfimage_print
   
       

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        TextBlock.FontSize="16">
    <Canvas.Resources>

        <!-- Define properties common to both figures. -->

        <Style x:Key="figure">
            <Setter Property="Polygon.Points"
                Value="  0   0,   0 184, 184 144, 144  24,20 120, 120 300, 280 264, 964,  0" />
            <Setter Property="Polygon.Fill"
                    Value="Blue" />
            <Setter Property="Polygon.Stroke"
                    Value="Red" />
            <Setter Property="Polygon.StrokeThickness"
                    Value="3" />
        </Style>
    </Canvas.Resources>


    <TextBlock Canvas.Left="48" Canvas.Top="24"
               Text="FillRule = EvenOdd" />

    <Polygon Style="{StaticResource figure}"
             FillRule="EvenOdd"
             Canvas.Left="48" Canvas.Top="72" />


    <TextBlock Canvas.Left="360" Canvas.Top="24"
               Text="FillRule = NonZero" />

    <Polygon Style="{StaticResource figure}"
             FillRule="NonZero"
             Canvas.Left="360" Canvas.Top="72" />
</Canvas>