2009-04-29 11 views
3

항목 그룹을 처리 할 때 그룹 상태의 통합 이미지를 표시하고 싶었 기 때문에 투명 배경과 여러 가지 색상의 전경이있는 진보 막대가 여러 개 모눈으로 만들어졌습니다. 같은 세포.WPF 사용자 지정 그리기 다중 진행률 막대

sample image http://i40.tinypic.com/2lksj6x.png

나는 (보라색 줄이 녹색에서 실제로 보라색이며, 때로는 등, 맨 위에 그립니다) 일부 투명성 아티팩트 실행 해요 그리고 조금 낭비 보인다. 그래서 저는 제 자신을 만들기로 결심했습니다. 그러나 지금 어떻게해야 할 지에 대해서는 약간의 마비가 있습니다. FrameworkElement의 OnRender에서 DrawingContext를 사용합니까? 아니면 더 간단한 것이 있습니까? 자신 만의 통제를 할 때 일반적인 규칙이 있습니까?

필자는 쉽게 들러 볼 수 있기 때문에 원형 차트로 전환하는 것을 숙고했지만 시간이 많이 걸렸습니다. 기성품이 아닙니다.

감사합니다.

답변

1

다른 진행 상황을 어떻게 결합 할 것인지 진행 방법을 잘 모르겠지만 진도에 가장 가까운 부분이 Z- 색인의 맨 아래에 있고 진행률이 가장 낮다고하면

1) 아마이 새로운 progresbar에 대한 사용자 정의 컨트롤을 만들 수 있습니다.

2) NumberOfProgresses라는 속성이 있는데,이 속성은 상기 진행 상황을 포함하는 배열로 묶여 있습니다.

3) 배경 속성이있는 간단한 wpf 컨트롤이기 때문에 각 진행 상황이 테두리 항목 (또는 시각적 트리보다 더 적합한 항목)으로 표시됩니다. 배경 속성은 멋진 진행 상황 스타일로 설정되고 진행 색상은 스타일에서 테두리의 테두리 브러시 속성을 말하도록 바인딩 될 수 있습니다. 진행 색상을 쉽게 설정할 수 있습니다.

4) 사용자 정의 컨트롤에는 배열의 백분율 값과 진행률 인덱스를 매개 변수로 사용하는 UpdateProgress 메서드가 있습니다.

5) 진행 상황이 업데이트됨에 따라 테두리의 적절한 너비 (사용자 제어 실제 너비 * 백분율)를 계산하고 Z 색인으로 재생하여 위/아래에 표시하거나 수평선을 경계로, 진행 상황에 따라 가장 적은 것을 먼저 설정 한 다음 나머지 진행에 대해 동일한 진행을 얻기 위해 이전 진행 길이를 빼야합니다.

투명성으로 인한 인공물이없고 OnRender()도 없습니다 ... WPF에서는 OnRender와 함께 WinForms에 필요한 것처럼 OnRender와 OnRender를 망칠 필요가 없습니다. 코드를 통해 요소를 설정하여 원하는 모양을 만들고 WPF로 렌더링하도록하십시오.)

이 사용자 컨트롤에 한 가지 문제가 있다고 상상할 수 있습니다. 어떤 색이 어떤 진행 상황에 속해 있는지 사용자에게 피드백을 제공해야합니다. 하지만 그렇게되면 사각형 하나로 돌아갈 수 있습니다. 즉, 여러 개의 진행 막대를 표시하는 것이 더 낫고/더 간단합니다.

+0

그럼, 아마도 .cs 파일 일 것입니다. – Thomas

+0

사용자 정의 컨트롤을 만드는 방법에 따라 다릅니다. 다른 응용 프로그램에서이 응용 프로그램을 재사용하지 않으려면 xaml과 cs로 구성된 새로운 wpf UserControl을 솔루션에 추가하십시오. xaml 파트에서는 ​​사물의 기본 레이아웃을 정의합니다. 주로 진행 상황을 나타내는 테두리 항목의 컨테이너입니다.그리고 cs 파일에서 실제로 새 테두리를 만들고 컨테이너에 배치하는 코드를 작성하고 업데이트 진행 방법도 ... – Marko