Rectangle
元素有StrokeDashArray
,允许用短划线绘制,但它不支持圆角。 Border
控件支持带有圆角的漂亮粗线,但只会绘制实线。
通过任何控制实现带圆角的虚线边框的最佳方法是什么?
Example of dashed border http://img524.imageshack.us/img524/3186/dashedborder.png
答案 0 :(得分:67)
你错了Rectangle
不支持这个:
<Rectangle StrokeDashArray="0.5 1.0 0.3" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10"/>
答案 1 :(得分:9)
WPF边框控件不支持虚线。 如果要为控件应用虚线/虚线边框,可以使用装饰器简单地装饰控件。
以下是示例装饰类。这是任何UIelement的通用装饰。
class DottedLineAdorner : Adorner
{
public UIElement AdornedElement { get; set; }
public DottedLineAdorner(UIElement adornedElement) : base(adornedElement)
{
AdornedElement = adornedElement;
}
protected override void OnRender(DrawingContext drawingContext)
{
Size eltSize = (AdornedElement as FrameworkElement).DesiredSize;
Pen pen = new Pen(Brushes.Blue, 2) { DashStyle = DashStyles.DashDot };
drawingContext.DrawRoundedRectangle(null, pen, new Rect(0, 0, eltSize.Width, eltSize.Height), 10, 10);
}
}
我的xaml中有一个简单的文本块,它包含在一个名为“LayoutGrid”的网格中。
现在,边框可以应用在
后面的代码中 private void Window_Loaded(object sender, RoutedEventArgs e)
{
AdornerLayer.GetAdornerLayer(LayoutGrid).Add(new DottedLineAdorner(textblock));
}