2013-08-13 4 views
2

직사각형을 그리고이 직사각형을 2 부분으로 나누어야합니다. 나는 그것을 나누기 위해 선을 사용하려고 노력하고있다. 그러나 내가 선을 볼 수없는 이유를 모른다.Windows Phone : 사각형에 선을 그리는 방법은 무엇입니까?

Rectangle rect = new Rectangle(); 
rect.Fill= Colors.Blue; 
rect.Width=100; 
rect.Margin = new Thikness (0,40,0,0); 
grid.Children.Add(rect); 

Line line = new Line(); 
line.Stroke = Colors.Black; 
line.StrokeThickness=1; 
line.X1=2; 
line.X2=7; 
line.Y1=41; 
line.Y2=41; 
grid.Children.Add(line); 

어떻게 사각형에 선을 추가 할 수 있습니까? 여기

+0

이 사각형을 가로, 세로 또는 대각선으로 나누고 싶습니까? 왜 그림 그리기 대신 캔버스 대신 그리드를 사용하고 있습니까? –

+0

세로로 나누고 싶습니다. 내 마음에 처음으로 나온 것은 그리드였다. 결과에 영향을 줍니까? –

답변

6

는 수직으로 분할 할 방법은 다음과 같습니다 -

당신은 라인을 폭 5 개 픽셀 그리기되었지만 당신의 라인은 뇌졸중 블랙이었다 때문에 보이지 않았고 페이지 배경은, 그래서도 검은 색이었다) 선이 숨겨졌다. 라인은 (2,41)에서 (7,41)로 그려졌습니다.

b)는 당신의 사각형은 100 개 픽셀 폭 페이지로 높이 페이지의 중심에 있었다, 따라서 중앙

에 있던 사각형과 교차하지 않았다 왼쪽 상단에 있던 라인

Rectangle rect = new Rectangle(); 
rect.Fill = new SolidColorBrush(Colors.Blue); 
rect.Width = 100; 
rect.Height = 200; 
Canvas.SetLeft(rect, 200); 
Canvas.SetTop(rect, 20); 
LayoutRoot.Children.Add(rect); 

Line line = new Line(); 
line.Stroke = new SolidColorBrush(Colors.White); 
line.StrokeThickness = 1; 

line.X1 = Canvas.GetLeft(rect) + rect.Width/2; 
line.X2 = Canvas.GetLeft(rect) + rect.Width/2; 

line.Y1 = Canvas.GetTop(rect); 
line.Y2 = Canvas.GetTop(rect) + rect.Height; 

LayoutRoot.Children.Add(line); 

1)이 LayoutRoot : - 당신은 쉽게 상단과 나는 다음과 같은 방법으로 코드를 수정

캔버스에 각 항목의 왼쪽 픽셀 위치를 설정할 수 있기 때문에 C) 나는 캔버스의 사용을 권장합니다 내 캔버스가 XAML에있다 ... 나는 단지 chan이있다. 그리드에서 기본 페이지 템플리트의 Canvas로 ged합니다.

2)이 두 줄을 사용하여 캔버스에서 rect의 위치를 ​​설정했습니다. 이 값을 하드 코딩 된/프로그래밍 방식으로 계산 된 값으로 변경할 수 있습니다.

Canvas.SetLeft(rect, 200); 
Canvas.SetTop(rect, 20); 

3) 여기

line.X1 = Canvas.GetLeft(rect) + rect.Width/2; 
line.X2 = Canvas.GetLeft(rect) + rect.Width/2; 

line.Y1 = Canvas.GetTop(rect); 
line.Y2 = Canvas.GetTop(rect) + rect.Height; 

X1 및 X2 위치 라인의 X 및 Y 위치를 계산 한 기본적 RECT 폭의 좌측 RECT 위치 플러스 절반

Y1과 Y2 위치는 rect top과 rect top과 rect height입니다.

캔버스에이 두 요소를 추가하면 작동합니다.

관련 문제