Follow me on GitHub

polyLine画折返线时绘图出头的问题

---恢复内容开始---

用polyline画线的时候需要折返几次,结果出现了以下问题:

  

显然,线宽越大,露头越多,代码如下:

        // xaml里面加个mainCanvas就行了
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Polyline polyLine = new Polyline() {
                Stroke = new SolidColorBrush(Colors.Black),
                StrokeThickness = 6,//线宽
            };
            polyLine.Points.Add(new Point(0,0));//正方形咯
            polyLine.Points.Add(new Point(100, 0));
            polyLine.Points.Add(new Point(100, 100));
            polyLine.Points.Add(new Point(0, 100));
            polyLine.Points.Add(new Point(0, 0));//end

            polyLine.Points.Add(new Point(100, 0));//折返
            polyLine.Points.Add(new Point(0, 0));

            Canvas.SetLeft(polyLine,100);
            Canvas.SetTop(polyLine, 100);
            mainCanvas.Children.Add(polyLine);
        }
一开始以为是StrokeStartLineCap和StrokeEndLineCap的问题,就设置了一下,结果毫无反应。
注意到,有个StrokeMiterLimit属性,查了下,msdn的解释是这样的:(抱歉我是没看懂,机翻水平始终是那么低)

备注里面解释了原因:

通俗地说就是两个直线如果形成锐角就会露头,测试一下:

 

看不出来。。。

加宽线粗在看一下:

验证成功。

so...结论就是:小于90度时,加个StrokeMiterLimit = 1.0;//最小就是1.0了,就可以不露头了。

posted @ 2015-04-19 15:09  枯黄的树叶  阅读(508)  评论(0编辑  收藏  举报