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了,就可以不露头了。

转载于:https://www.cnblogs.com/sczhi/p/4439185.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值