如何创建圆角在WPF虚线边框?(How do I create a dashed border wi

2019-06-24 05:33发布

Rectangle元素有StrokeDashArray这使得它与虚线绘制,但它不支持圆角。 在Border控制支持好的粗线圆角,但只会画实线。

什么是实现与圆角的虚线边框,与任何控制的最佳方式是什么?

虚线边框的例子http://img524.imageshack.us/img524/3186/dashedborder.png

Answer 1:

你误会了该Rectangle不支持这一点:

<Rectangle StrokeDashArray="0.5 1.0 0.3" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10"/>



Answer 2:

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));
    }


文章来源: How do I create a dashed border with rounded corners in WPF?