문제

항목 그룹을 처리 할 때 그룹의 상태에 대한 통일 된 이미지를 표시하고 싶었으므로 본질적으로 동일한 셀에서 투명한 배경과 다양한 색상 전경을 가진 여러 개의 ProgressBar의 그리드를 만들었습니다.

sample image

나는 약간의 투명성 아티팩트를 사용하고 있습니다 (자주색 막대는 실제로 녹색 아래에 자주색이며 때로는 상단 위로 그려집니다). 약간 낭비되는 것 같습니다. 그래서 나는 내 자신을 만들기로 결정했지만 지금은 그것을하는 방법에 대해 약간의 마비를 얻었습니다. FrameworkElement의 Onrender에서 DrawingContext를 사용합니까, 아니면 더 간단한 것이 있습니까? 자신의 통제와 관련하여 일련의 일반적인 규칙이 있습니까?

나는 그것들이 쉽게 나오기 쉽기 때문에 파이 차트로 전환하는 것을 숙고했지만, 나는 기성품을 벗어나지 않은 일을했습니다.

감사!

도움이 되었습니까?

해결책

나는 당신이 진행 상황을 어떻게 다른 진행 상황을 결합 시키려고 노력하는지 잘 모르겠지만, 진행 상황에 따라 가장 먼 곳이 z-index의 맨 아래에 있고 최소한의 진행 상황이 상단에 있다면, 나는 이것의 줄 :

1) 아마도이 새로운 Progresbar에 대한 사용자 컨트롤을 만들 것입니다.

2) NumberofProgresses라는 속성이 있으며, 이는 상기 진행의 상태를 포함하는 배열과 묶여 있습니다.

3) 각 진행 상황은 배경 속성을 가진 간단한 WPF 컨트롤이기 때문에 국경 항목 (또는 시각적 트리에 더 적합한 것)으로 표시됩니다. 배경 속성은 멋진 진행 상황 스타일로 설정되며 진행 색상은 스타일로 묶여 국경의 국경 브러시 속성을 말할 수 있습니다. 진행 상황을 쉽게 설정할 수 있습니다.

4) 사용자 컨트롤에는 메소드 updateProgress가 있으며, 이는 배열의 백분율 값과 배열의 진행률을 매개 변수로 가져옵니다.

5) 진행 상황이 업데이트되면 둘 중 하나가 될 수 있습니다. 테두리에 대한 적절한 너비 (사용자 제어 실제 너비 * 백분율)를 계산하고 Z 색인과 함께 플레이하여 상단/하단에 표시되거나 테두리를 수평으로 쌓아 올리십시오. 최소한의 진보는 첫 번째로 최소한의 진행 상황에서 나머지 진행 상황에서 동일한 효과를 얻으려면 이전 진행 길이를 설명해야합니다.

이렇게하면 투명성 유도 아티팩트가없고 onrender ()가 없을 것입니다. 코드를 통해 요소를 설정하여 원하는 모양을 얻고 WPF가 렌더링을하도록하십시오.)

그래도이 사용자 제어에서 한 가지 문제를 상상할 수 있습니다. 어떤 색상이 어떤 진행 상황에 속하는지 사용자에게 피드백을 제공해야합니다. 그러나 그것은 아마도 당신을 정사각형으로 되돌릴 것입니다. 즉, 여러 개의 ProgressBar를 표시하는 것이 더 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top