2011-03-17 1 views

답변

31

맞습니다. SizeArcSegment은 호의 시작과 끝을 정의하는 점 사이의 반경이 아닙니다. 이 속성은 해당 점 사이에 그려지는 타원의 크기를 나타냅니다. 타원 대신 원을 사용하려면 항상 크기의 x와 y 값을 동일하게 설정해야합니다. 그려진 원의 반을 항상 원할 경우 Size이 두 점 사이의 거리의 절반이되도록해야합니다. 예를 들어

아래의 코드를 보면이 점 100, 100에서 시작하여 점 200, 100에서 끝 원의 상반부를 그릴 것입니다

<Canvas> 
    <Path Stroke="Black"> 
     <Path.Data> 
      <PathGeometry> 
       <PathFigure StartPoint="100,100"> 
        <ArcSegment IsLargeArc="True" 
           Size="50, 50" 
           Point="200, 100" 
           SweepDirection="Clockwise" /> 
       </PathFigure> 
      </PathGeometry> 
     </Path.Data> 
    </Path> 
</Canvas> 

. Size 속성을 50, 50 (해당 점 사이의 거리가 100)으로 설정 했으므로 정확하게 원의 절반을 만듭니다. SweepDirection에 서클은 시계 방향으로 그려 져야하며, 이것이 상반부를 그릴 이유입니다. 아래 화면에 ClockwiseCounterclockwise의 차이를 체크 아웃 :

50, 50, clockwise 50, 50, counterclokwise

IsLargeArc는 타원 이하의 더 큰 부분을 그릴 것인지 여부를 선택합니다. 저는 원의 반을 그리기 때문에 이것은 의미가 없습니다. 그러나 크기가 다른 타원을 그리면 아웃풋의 모양이 크게 달라져서 어떻게 작동하는지 볼 수 있습니다.

200, 200 호를 큰 호 부분을 사용하여 clockwise에 넣으려고 할 때 나타나는 모양입니다. 당신이 볼 수 있듯이 - 아크도

200, 200, clockwise, largearc (이 차단 될 부분이 넘쳐 일반 응용 프로그램에서 WPF 디자이너에서 촬영된다) 그리고이 같은 일이지만 작은 호를 표시하도록 설정 창에 맞게하지 않습니다 200, 200, clockwise, not largearc

Size 속성을 200, 200으로 변경하면 그려진 원이 단순히 4 배 커졌지만 정의한 정확한 지점에서 시작하고 끝납니다. Size은 점과 관련이 없습니다. 그 사이에는 타원/cricle을 그리지 만 타원 모양이 바뀝니다.

Size의 의미가 ArcSegment에 표시되기를 바랍니다. 아직도 혼란 스럽다면 자세한 질문을 보내주십시오.

+0

많은 분들 Pako. 저는이 문제를 다시 해결하기 위해 돌아 왔습니다. 귀하의 대답은 MSDN 설명서보다 백 배나 더 훌륭하다고 말해야합니다. – NVM

+3

@NVM MSDN 설명서가 훌륭하더라도 호 기능을 구현하는 데 사용 된 기하학적 모델이 아프거나 최소한의 놀라움을 벗어난 원칙을 위반하며 다른 모든 드로잉 API와 다릅니다 ... – heltonbiker

관련 문제