WPF에서 ArcSegment를 사용하여 임의의 두 점 사이에서 반원을 그리는 수학을 보여줄 수 있습니까?WPF 두 개의 임의의 점 사이에서 ArcSegment를 사용하는 반원형에 대한 수학
저는 ArcSegment의 RadiusY RadiusY와 혼동합니다. 그것은 두 점에 상대적인 것이 아니라 오히려 X와 Y 축에 관한 것 같습니다. 그것은 그것이 정말로 있어야하는 방법인가?
WPF에서 ArcSegment를 사용하여 임의의 두 점 사이에서 반원을 그리는 수학을 보여줄 수 있습니까?WPF 두 개의 임의의 점 사이에서 ArcSegment를 사용하는 반원형에 대한 수학
저는 ArcSegment의 RadiusY RadiusY와 혼동합니다. 그것은 두 점에 상대적인 것이 아니라 오히려 X와 Y 축에 관한 것 같습니다. 그것은 그것이 정말로 있어야하는 방법인가?
맞습니다. Size
의 ArcSegment
은 호의 시작과 끝을 정의하는 점 사이의 반경이 아닙니다. 이 속성은 해당 점 사이에 그려지는 타원의 크기를 나타냅니다. 타원 대신 원을 사용하려면 항상 크기의 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
에 서클은 시계 방향으로 그려 져야하며, 이것이 상반부를 그릴 이유입니다. 아래 화면에 Clockwise
과 Counterclockwise
의 차이를 체크 아웃 :
IsLargeArc
는 타원 이하의 더 큰 부분을 그릴 것인지 여부를 선택합니다. 저는 원의 반을 그리기 때문에 이것은 의미가 없습니다. 그러나 크기가 다른 타원을 그리면 아웃풋의 모양이 크게 달라져서 어떻게 작동하는지 볼 수 있습니다.
200, 200
호를 큰 호 부분을 사용하여 clockwise
에 넣으려고 할 때 나타나는 모양입니다. 당신이 볼 수 있듯이 - 아크도
(이 차단 될 부분이 넘쳐 일반 응용 프로그램에서 WPF 디자이너에서 촬영된다) 그리고이 같은 일이지만 작은 호를 표시하도록 설정 창에 맞게하지 않습니다
Size
속성을 200, 200
으로 변경하면 그려진 원이 단순히 4 배 커졌지만 정의한 정확한 지점에서 시작하고 끝납니다. Size
은 점과 관련이 없습니다. 그 사이에는 타원/cricle을 그리지 만 타원 모양이 바뀝니다.
Size
의 의미가 ArcSegment
에 표시되기를 바랍니다. 아직도 혼란 스럽다면 자세한 질문을 보내주십시오.
많은 분들 Pako. 저는이 문제를 다시 해결하기 위해 돌아 왔습니다. 귀하의 대답은 MSDN 설명서보다 백 배나 더 훌륭하다고 말해야합니다. – NVM
@NVM MSDN 설명서가 훌륭하더라도 호 기능을 구현하는 데 사용 된 기하학적 모델이 아프거나 최소한의 놀라움을 벗어난 원칙을 위반하며 다른 모든 드로잉 API와 다릅니다 ... – heltonbiker