---恢复内容开始---
用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了,就可以不露头了。