2009-06-26 4 views
28

Rectangle 요소에는 대시로 그릴 수있는 StrokeDashArray이 있지만 둥근 모서리는 지원하지 않습니다. Border 컨트롤은 둥근 모서리가있는 멋진 두꺼운 선을 지원하지만 실선 만 그립니다.WPF에서 모서리가 둥근 대시 테두리를 만드는 방법은 무엇입니까?

컨트롤이있는 둥근 모서리가있는 점선 테두리를 얻는 가장 좋은 방법은 무엇입니까?

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

답변

65

당신은 Rectangle이를 지원하지 않는 착각 :

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

enter image description here

+0

귀하의 이미지 링크 뒤에 코드에 적용 할 수있는 것은 깨진 것 같습니다. 여전히 원본 이미지가있는 경우 stack.imgur에 다시 업로드하거나 이미지를 수정하지 않고 작동하도록 답을 편집하십시오. 감사. –

8

WPF 국경 통제가 파선을 지원하지 않습니다. 컨트롤에 점선/점선 테두리를 적용하려면 간단히 컨트롤을 장식 자로 꾸밀 수 있습니다.

다음은 샘플 adorner 클래스입니다. 이것은 모든 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); 
    } 
} 

xaml에 간단한 텍스트 블록이 있으며 'LayoutGrid'라는 표에 포함되어 있습니다.

이제 국경이

private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     AdornerLayer.GetAdornerLayer(LayoutGrid).Add(new DottedLineAdorner(textblock)); 
    } 
관련 문제