C# 如何在WPF中创建带圆角的虚线边框?
C# 如何在WPF中创建带圆角的虚线边框?,c#,wpf,xaml,wpf-controls,C#,Wpf,Xaml,Wpf Controls,Rectangle元素具有StrokeDashArray,允许使用破折号绘制,但不支持圆角。边框控件支持带圆角的粗线条,但只绘制实线 使用任何控件实现圆角虚线边框的最佳方法是什么 您错误地认为矩形不支持此功能: <Rectangle StrokeDashArray="0.5 1.0 0.3" Stroke="Black" StrokeThickness="2" RadiusX="10" RadiusY="10"/> WPF边框控件不支持虚线。 如果要为控件应用虚线/虚线边框,只
Rectangle
元素具有StrokeDashArray
,允许使用破折号绘制,但不支持圆角。边框
控件支持带圆角的粗线条,但只绘制实线
使用任何控件实现圆角虚线边框的最佳方法是什么
您错误地认为
矩形
不支持此功能:
<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));
}
您的图像链接似乎已断开。如果您仍然拥有原始图像,请将其重新加载到stack.imgur,或者编辑您的答案,使其在没有图像的情况下工作。谢谢