2013-04-24 4 views
1

나는 희망을 갖고 꽤 간단한 일을 지금 당장 생각하려고 노력해 왔지만, 난 이해하지 못합니다. 내가 갖고 싶은 것은 윈도우입니다. 버튼과 폴리곤은 두 개의 다른 컨테이너에 있습니다.창 크기로 도형 크기 조정

창의 크기를 조정할 때 버튼의 크기와 상대 위치 (예 : 왼쪽 위 모서리, 다른 컨테이너로 덮지 않음)를 유지하고 다각형의 크기를 조정하려면 (폭/높이를 유지하면 안 됨) 비율)을 조정할 수 있습니다.

그것은 매우 내가 XAML 에서 정의하는 것은 전혀 도움을 수행, 코드 숨김에서 완전히 다각형을 만들 수 있습니다 중요.

답변

0

경로의 크기와 높이를 배율 인수로 사용하여 PathGeometry 크기의 경로를 만들 수 있습니다. 아래 그림과 같이

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Button HorizontalAlignment="Left" Margin="5" Content="Button"/> 
    <Canvas x:Name="polylineCanvas" Grid.Row="1"> 
     <Path Stroke="Blue" StrokeThickness="3"> 
      <Path.Data> 
       <PathGeometry x:Name="polyline"> 
        <PathGeometry.Transform> 
         <ScaleTransform 
          ScaleX="{Binding ActualWidth, ElementName=polylineCanvas}" 
          ScaleY="{Binding ActualHeight, ElementName=polylineCanvas}"/> 
        </PathGeometry.Transform> 
       </PathGeometry> 
      </Path.Data> 
     </Path> 
    </Canvas> 
</Grid> 

지금 당신이 코드의 형상을 지정할 수 있습니다 :

var points = new Point[] 
{ 
    new Point(0.1, 0.1), 
    new Point(0.9, 0.1), 
    new Point(0.9, 0.9), 
    new Point(0.1, 0.9) 
}; 

var figure = new PathFigure 
{ 
    StartPoint = points[0], 
    IsClosed = true 
}; 

var segment = new PolyLineSegment(points.Skip(1), true); 
figure.Segments.Add(segment); 
polyline.Figures.Add(figure); 

당신은 선택적으로 사용할 수있다 따라서 당신은 어느 방향으로 0에서 1까지의 논리적 좌표로 전체 형상을 지정할 수 있습니다 pathGeometry 대신 StreamGeometry입니다.

+0

대단히 감사합니다! 나는 뒤에있는 코드에서 바인딩을 할 수 있었고, 많은 것을 배웠고 마침내 나아갈 패턴을 얻었다. – egon12

0

WPF에는 앵커가 없습니다. 많은 레이아웃 컨트롤이 있고 각 컨트롤의 위치를 ​​설정하는 다른 방법이 있습니다.

예를 들어, 그리드에 배치 된 컨트롤은 여백과 크기를 사용하여 배치됩니다. 캔버스의 컨트롤은 Canvas.Top, Canvas.Left, Canvas.RightCanvas.Bottom을 사용하여 위치를 지정합니다. StackPanels의 컨트롤은 여백을 사용하여 구분됩니다.

나는 당신이 원하는 않는 것을 얻을 당신이 WPF의 레이아웃에 대한이 기사에서 살펴 것이 좋습니다

http://www.codeproject.com/KB/WPF/WPFLayoutQS.aspx

http://www.c-sharpcorner.com/UploadFile/dpatra/105202009083754AM/1.aspx

희망이 도움이!