该Rectangle
元素有StrokeDashArray
这使得它与虚线绘制,但它不支持圆角。 在Border
控制支持好的粗线圆角,但只会画实线。
什么是实现与圆角的虚线边框,与任何控制的最佳方式是什么?
虚线边框的例子http://img524.imageshack.us/img524/3186/dashedborder.png
该Rectangle
元素有StrokeDashArray
这使得它与虚线绘制,但它不支持圆角。 在Border
控制支持好的粗线圆角,但只会画实线。
什么是实现与圆角的虚线边框,与任何控制的最佳方式是什么?
虚线边框的例子http://img524.imageshack.us/img524/3186/dashedborder.png
你误会了该Rectangle
不支持这一点:
<Rectangle StrokeDashArray="0.5 1.0 0.3" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10"/>
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));
}