2009-10-29 5 views
4

WPF에서는 어떤 경로가 그려지는 방식을 수정할 수있는 방법이 있습니까? APART는 시퀀스를 사용합니까? 내가 드로잉하고있는 모든 경로 또는 작은 삼각형, 파도 등을 위해 삼중 선을 그리기를 원한다고 가정 해 봅시다. 드로잉 경로 자체에. 나는 브러쉬를 시도했지만 Path을 따르지 않습니다. 제발 도와주세요WPF Line, path ..etc 사용자 지정 그리기 스타일

xx
+1

지금 당장은 적절한 답을 조사 할 시간이 없지만이 기사를 살펴보십시오. http://msdn.microsoft.com/en-us/magazine/cc337899.aspx 당신에게 매우 유용하다는 것을 증명하고, 포함 된 평행선 경로의 구현이 있습니다. – Egor

+0

안녕하세요, 덧글에 대한 thx하지만 이미 이미 위의 통해 기존 경로를 복사 한 다른 브러시로 단일 경로를 복사하지 않았다 – Chandimal

+0

http://blogs.msdn.com/b/mrochon/archive/2011/01 사용할 수 있습니다. /10/custom-line-caps-in-wpf.aspx 그런 다음 더 긴 선을 길이가 1 인 작은 연속 선으로 그리거나 사용자 정의 가장자리가 원하는대로 그려야합니다. –

답변

0

WPF에서 이렇게하는 방법은 없습니다. 이 솔루션은 복합 Path 객체 또는 복잡한 코드 숨김 체조를 포함합니다. 트리플 라인 경로 구현을 구체적으로 찾고 있습니까?

+0

부착 된 특성을 사용하여 형상을 강제 변형하면 비교적 쉽게 처리 할 수 ​​있습니다. 자세한 내용은 내 대답을 참조하십시오. –

+0

와우 정말 멋집니다. 나는 그런 식으로 생각하지 않았을거야 :). – jgraves

3

WPF의 Geometry 클래스에는이 작업을 쉽게 수행하는 데 필요한 모든 프리미티브가 있지만 코드에서 수행해야합니다. 사용자 정의 라인을 수행해야 할 때 일반적으로 Geometry을 기반으로 Drawing을 구성하지만, 귀하의 경우에는 병렬로 3 개의 라인을 가지고 획을 그을 수있는 Geometry을 간단하게 작성할 수 있습니다. PathGeometry.CreateFromGeometry()

  1. 시작은 그 가장자리
  2. (옵션) 사이드 라인에 대응하는 새로운 구조에서 세그먼트를 제거를 얻기 위해 원하는 간격을 전달 사용 GetWidenedPathGeometry() 입력 경로
  3. 하는 PathGeometry 도착
  4. 는 삼중 선을 얻을 수있는 CombinedGeometry
  5. 획을 결합하여 구조를 원래의 형상으로 측면 선 geomerty 결합 원한다면 넓어진 형상의 끝

3 단계에 대한 자세한 설명 : 확대 된 지오메트리에는 원래 줄 끝에 선분이 있습니다. 이로 인해 선 끝을 가로 질러 선이 그려지기 때문에 실제로 많은 경우에 예술적으로 즐겁습니다. 그것없이 상황이 나아지면 사이드 라인 지오메트리를 반복하고 원래 경로의 끝점을 통과하는 모든 선분을 제거하여 제거하십시오.

끝 부분을 떼어 내지 않으면 위의 코드는 약 8 줄의 코드를 사용합니다.

편리하게 만들려면 속한 Path 컨트롤의 Data 속성을 효과적으로 강제하는 첨부 된 속성을 만드는 것이 좋습니다. 이러한 연결된 속성으로, 당신은 쓸 필요가있다 :

<Path TripleStroke.Enable="true" Data="..." /> 

당신이 연결된 속성을 구현하고있는 핸들러를 등록하는 방법을 알고 있다면,이 케이크 한 조각이다. 그렇지 않은 경우 첨부 된 속성 접근 방식을 구현하기 전에 값 속성을 시뮬레이트하기 위해 연결된 속성을 코딩하는 방법을 배우는 데 몇 시간을 소비 할 계획을 세우십시오.

업데이트 I 위에서 설명하는 기본적인 기술은 또한 임의의 패턴이 경로를 따라 적용 할 수 있도록 확장 될 수

. 예를 들어, 식 디자인 도구에서 사용자 지정 브러시를 참조하십시오. 그러나 WPF에 내장 된 기능은 없기 때문에 직접 만들면됩니다. 경험상 많은 작업임을 알 수 있습니다.다음 기본 단계는 :

첫째는 Geometry 기존 Drawing 취하는 방법 등 단부 캡에 대한 몇몇 파라미터를 생성하고 Geometry 의해 지정된 경로를 따라 주어진 Drawing 반복 새로운 Drawing을 생성한다. 그러면 스트로크 된 패스를 그리는 것이 쉽습니다. 사용자 정의 획을 설명하는 Drawing을 작성한 다음 변환 방법을 호출하는 변환기가있는 Binding을 포함하는 DrawingVisual을 사용하여 스트로크를 표시하십시오.

실제로 변환 방법 구현하려면 :

  1. GeometryDrawing 객체의 집합으로 그리기 소스를 변환를 (또한 ImageDrawing을 지원하지만 이미지를 스트레칭하는 3D 시스템을 사용할 필요가 있기 때문에 그것은 더 복잡하다) . 이것은 DrawingGroup 개의 객체를 반복하고, 이동하면서 변환을 추적하고, 적절한 변환으로 GeometryDrawings을 구성하여 수행됩니다.
  2. 원본 도면의 "엔드 캡"영역에서 형상의 일부를 제거하고 따로 설정하십시오.
  3. GeometryDrawing 개체를 복제하여 형상의 모든 좌표에 적절한 좌표 변환을 반복적으로 복제합니다.
  4. 동일한 절차를 사용하여 형상의 "엔드 캡"섹션을 처리하십시오.

또한 임의의 GlyphRunDrawings는 등가 GeometryDrawing을 만들 FormattedText.BuildGeometry를 사용하여 처리되는 단계 1 참고.

+0

thx .. 어도비 브러쉬 스트로크와 같은 것이 필요합니다. 경로를 따라 패턴을 가상으로 적용 할 수 있습니다. 지금은 낮은 수준에서 OK 결과를 보여주고 있습니다. – Chandimal

+0

어도비의 WPF처럼 임의의 맞춤 스트로크를 구현 한 방법을 설명하는 내용에 대한 답변을 추가했습니다. 나는 그것이 도움이되기를 바랍니다. –