2009-06-26 60 views
28

Phần tử RectangleStrokeDashArray cho phép nó được vẽ bằng dấu gạch ngang, nhưng nó không hỗ trợ các góc bo tròn. Điều khiển Border hỗ trợ các đường kẻ dày đẹp với các góc tròn, nhưng sẽ chỉ vẽ các đường nét liền.Làm cách nào để tạo đường viền đứt nét với các góc tròn trong WPF?

Cách tốt nhất để đạt được đường viền đứt nét với các góc tròn, với bất kỳ kiểm soát nào?

Example of dashed border http://img524.imageshack.us/img524/3186/dashedborder.png

Trả lời

65

Bạn đang sai lầm rằng Rectangle không hỗ trợ này:

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

enter image description here

+0

liên kết hình ảnh của bạn dường như đã bị phá vỡ. Nếu bạn vẫn có hình ảnh gốc, vui lòng tải lại hình ảnh đó lên stack.imgur hoặc chỉ chỉnh sửa câu trả lời của bạn để làm cho nó hoạt động mà không có hình ảnh. Cảm ơn. –

8

kiểm soát WPF Border không hỗ trợ các đường đứt nét. Nếu bạn muốn áp dụng đường viền chấm chấm/đứt nét cho điều khiển, bạn có thể chỉ cần trang trí điều khiển bằng một đường viền.

Đây là lớp adorner mẫu. Đây là một adorner chung cho bất kỳ UIelement nào.

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

Tôi có một textblock đơn giản trong xaml của tôi và nó được chứa trong một lưới có tên 'LayoutGrid'.

Bây giờ, biên giới có thể được áp dụng trong các mã sau

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     AdornerLayer.GetAdornerLayer(LayoutGrid).Add(new DottedLineAdorner(textblock)); 
    } 
Các vấn đề liên quan