c# - que - ¿Cómo creo un borde discontinuo con esquinas redondeadas en WPF?
xaml c# (2)
El elemento Rectangle
tiene StrokeDashArray
que permite que se StrokeDashArray
con guiones, pero no admite esquinas redondeadas. El control Border
admite lindas líneas gruesas con esquinas redondeadas, pero solo dibujará líneas continuas.
¿Cuál es la mejor manera de lograr un borde discontinuo con esquinas redondeadas, con algún control?
Ejemplo de borde discontinuo http://img524.imageshack.us/img524/3186/dashedborder.png
El control de borde WPF no admite líneas punteadas. Si desea aplicar un borde punteado / discontinuo para un control, simplemente puede decorar el control con un adorno.
Aquí está la clase de muestra adorner. Este es un adorno genérico para cualquier elemento de UI.
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);
}
}
Tengo un simple bloque de texto en mi xaml y está contenido en una grilla llamada ''LayoutGrid''.
Ahora, el borde se puede aplicar en el código detrás
private void Window_Loaded(object sender, RoutedEventArgs e)
{
AdornerLayer.GetAdornerLayer(LayoutGrid).Add(new DottedLineAdorner(textblock));
}