2011-11-04 5 views
0

여러분 중 일부는 어쩌면이 질문을 찾을 수 없지만 여전히 wpf 그림에 깊이 익숙하지 않습니다. 캔버스 주위를 이동하는 사각형에 서식있는 텍스트를 추가하고 UIElement.OnRender 메서드를 재정의하는 힌트를 얻었습니다. 그러나 캔버스 클래스 또는 Shape 클래스를 재정의해야하는지 여부는 알 수 없습니다. 어떤 경우이든, 예제에 설명 된대로 메서드의 drawingContext 매개 변수를 참조하는 대상은 http://msdn.microsoft.com/en-us/library/bb613560.aspx#FormattedText_Object?wpf의 도형에 텍스트 그리기

텍스트가 궁극적으로 도형에 할당되었거나 캔버스의 모양과 함께 움직일 수없는 시각적 인 임시 효과입니까?

도형에 텍스트를 그리는 효과적인 방법이 있습니까?

+0

모양은 프로그램 실행시 만들어 지므로 xaml을 기반으로하는 솔루션은 (필자가 아는 한) 적용 할 수 없습니다. 동적 인 기반, 즉 C#을 사용하여 솔루션이 필요합니다. – arjacsoh

+1

가능한 [모양에 텍스트 그리기] (http://stackoverflow.com/questions/7977240/draw-text-on-a- 형태) –

+0

거의 모든 XAML은 C#으로 쉽게 변환 될 수 있지만 아무 것도 없어야합니다. 문제. –

답변

1

당신은 같은 Grid 또는 그런 다음 당신이 무엇을 원하는 서식을 적용 할 수있는 Canvas

<Grid> 
    <Rectangle Fill="Red" Stroke="Black" 
       HorizontalAlignement="Stretch" VerticalAlignment="Stretch" /> 

    <Label Content="Test" 
      HorizontalAlignment="Center" VerticalAlignment="Center" /> 
</Grid> 

로, 컨트롤이 중첩 할 수있는 부모 컨테이너에 모두 컨트롤을 배치하여 사각형의 상단에 텍스트를 그릴 수 있습니다 다음 LabelRectangle, 그리고 당신이 Grid

0

레이첼의 대답의 위치를 ​​설정하여 주변의 그룹을 이동할 수 있습니다 당신이 조금을 확장 할 수있는 UserControl을 다음과 같이 정의하고 있지만, 올바른 문자열 DependencyProperty에, 모양 : UIElement에 DependencyProperty에

그리고 코드 숨김에서1. 라벨을 정의합니다.

은 모양의 변화 이벤트를 처리하고 전화 :

private void UpdateShape() 
{ 
    grdShapeContainer.Children.Clear(); 
    if(this.Shape != null) 
    { 
     grdShapeContainer.Children.Add(this.Shape); 
    } 
} 

이 방법은 당신이 일을 동적으로 만들 수있을 것입니다.

감사합니다, Artak

또한 그리드와 같은 객체에 설정 될 수 ZIndex 재산을 조사 할 수 있습니다
0

(<Rectangle Background="Black" Grid.ZIndex = 99 /> 인스턴스는 그것을 솟다 다른 항목을 넣을 것이기 때문) "로드 같은 일을 유용하는 "스크린.