2016-12-27 1 views
0

점이있는 다각형이 있습니다. 다각형 내부의 지정된 점에 원을 그려야합니다. 타원의 Clip Property를 시도했지만 다각형의 점을 얻을 수 없습니다.다각형의 지정된 점에 원을 그립니다.

XAML

<Border x:Name="boardDiagramBorder" BorderThickness="2.5" Margin="5" Background="Gray" > 
         <Grid x:Name="boardCanvas"> 
          <Polygon x:Name="polyOutLine" ClipToBounds="True" Fill="Black" 
             Stroke="White" 
             StrokeThickness="2"> 
          </Polygon> 

         </Grid> 
        </Border> 

코드 내가 포인트 21004, -57874에 원을 그릴 필요 다각형

polyOutLine.Points.Add(new System.Windows.Point() { X = 0, Y = 0 }); 
      polyOutLine.Points.Add(new System.Windows.Point() { X = 118900, Y = 0 }); 
      polyOutLine.Points.Add(new System.Windows.Point() { X = 118900, Y = 62993 }); 
      polyOutLine.Points.Add(new System.Windows.Point() { X = 0, Y = 62993 }); 

을 그립니다.

+0

더 나은 'Ellipse' 대신'EllipseGeometry'로'Path'를 그립니다. – Clemens

답변

2

그리드 내에서 정확한 좌표로 그릴 수 없습니다. 캔버스를 사용하여 좌표를 사용하여 사각형, 원 및 다각형을 포함한 도형을 그려야합니다.

업데이트 : 귀하의 의견을 토대로 내 대답을 확장하고 여기에 넣습니다.

캔버스의 위치에 따라 원이 항상 상대 좌표로 캔버스를 기반으로하기 때문에 캔버스의 위치에 따라 다릅니다.

예를 들어, 캔버스가 왼쪽 위의 0,0 좌표에있는 경우 원은 캔바스를 기준으로 한 좌표로 위치가 정해집니다. 캔버스가 0,0에 위치하지 않으면 도면이 캔버스 위치의 오프셋과 함께 위치합니다.

+0

그리드를 캔버스로 변경했습니다. 정확한 좌표에서 원을 그리는 방법은 무엇입니까? –

1

당신은 원의 중심을 설정하는 Canvas.Top 및 위해 Canvas.LEFT 속성을 사용할 수 있습니다, 또는 당신이 기능을 follwing을 코드의 사용에서 원 중심을 설정하려면 여백 속성

<Grid> 
     <Canvas> 
      <Ellipse x:Name="innerCircle" Width="100" 
        Height="100" 
        Fill="#FFF4F4F5" 
        Stroke="Black" 
        Canvas.Left="50" 
        Canvas.Top="0" 
        /> 

      <Polygon x:Name="polyOutLine" 
        Stroke="Purple" 
        StrokeThickness="2"> 
       <Polygon.Fill> 
        <SolidColorBrush Opacity="0.4" Color="Blue" /> 
       </Polygon.Fill> 
      </Polygon> 
     </Canvas> 
    </Grid> 

을 사용할 수 있습니다

private void SetCircleCenter(int x,int y) 
{ 
    double radius = innerCircle.Width/2; 
    innerCircle.Margin = new Thickness(x-radius, y-radius, 0, 0); 
} 
관련 문제