微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Silverlight开发历程—绘制矢量图之Polyline 和 Polygon

 polyline(多线段) 和 polygon(多边形)

 polyline(多线段) 和 polygon(多边形)是Silverlight中简单但功能强大的绘图对象。它允许你声明N个Points属性值,然后根据Points属性的坐标先后顺序来绘制图形,并且支持线条内部的颜色填充。

首先介绍一下polyLine,他比Line元素更加强大,下面例子利用polyline来绘制线条:

<polyline stroke="Black" Points="0,0 50,50 300,0 400,100"></polyline>


运行结果:

代码中Points="0,100“ 总共分成了四对坐标然后根据四个点来绘制图形。

下面的例子来 说明polyline(多线段) 和 polygon(多边形)两个的用法和区别

        <!-- 三组坐标组成的polyLine开放图形-->
        <polyline stroke="Blue" strokeThickness="6" Points="50,50 150,200 300,50" Fill="Gold"></polyline>
        <!-- 三组坐标组成的polygon封闭图形-->
        <polygon stroke="Blue" strokeThickness="6" Points="400,50 650,200 800,50" Fill="Gold"></polygon>

运行结果:

上面例子分别利用polyline(多线段) 和 polygon(多边形)来绘制图型,然后除了坐标了不一样,其它的基本上都相同并且都填充了相同的颜色,唯一区别是

我们利用polygon绘制出来的图形是一个封闭的图形。

polyline(多线段) 和 polygon(多边形)均具有FillRule(填充规则)使用FillRule可以声明线条内的填充规则。如下面的例子:

<StackPanel x:Name="LayoutRoot" Background="White" Orientation="Horizontal">
                <!--EvenOdd 确定一个点是否位于填充区域内的规则,具体方法是从该点沿任意方向画一条无限长的射线,
                    然后计算该射线在给定形状中因交叉而形成的路径段数。 如果此数目为奇数,则该点在内部;如果是偶数,则该点在外部。  
            Nonzero 确定一个点是否位于路径填充区域内的规则,具体方法是从该点沿任意方向画一条无限长的射线,然后检查形状段与该射线的交点。
                    从零开始计数,每当线段从左向右穿过该射线时加 1,而每当路径段从右向左穿过该射线时减 1。 
                    计算交点的数目后,如果结果为零,则说明该点在路径外部。 否则,说明该点位于路径内部。-->

        <polygon stroke="Blue" strokeThickness="2" Fill="Orange" Margin="120,60,0" FillRule="EvenOdd"
                 Points="15,200 68,70 110,200 0,125 134,125"></polygon>

        <polygon stroke="Blue" strokeThickness="2" Fill="Red" Margin="50,0" FillRule="Nonzero"
                 Points="15,125"></polygon>
    </StackPanel>


运行结果:

 

分别使用了FillRule的两种规结果也不一样。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐